Appearance
Function: createDelayedPLimit()
ts
function createDelayedPLimit(concurrency?: number, delayMs?: number): <T>(fn: () => Promise<T>) => Promise<T>;Defined in: src/jobs/runJobs.ts:28
Create a concurrency-limited queue with a fixed delay between task starts.
Parameters
| Parameter | Type | Default value | Description |
|---|---|---|---|
concurrency | number | 1 | Max number of tasks that run at the same time. |
delayMs | number | 100 | Milliseconds to wait after one task starts before the next begins. |
Returns
A function that queues a task and returns a promise of its result.
ts
<T>(fn: () => Promise<T>): Promise<T>;Schedule a task under concurrency and delay constraints.
Type Parameters
| Type Parameter |
|---|
T |
Parameters
| Parameter | Type |
|---|---|
fn | () => Promise<T> |
Returns
Promise<T>
Example
ts
const limit = createDelayedPLimit(2, 100);
async function fetchPlanet(name: string) {
console.log(`Fetching: ${name}`);
await new Promise((r) => setTimeout(r, 500));
return name;
}
const tasks = ['Mars', 'Venus', 'Jupiter', 'Saturn'].map(
(planet) => limit(() => fetchPlanet(planet)),
);
const results = await Promise.all(tasks);
console.log(results); // ['Mars', 'Venus', 'Jupiter', 'Saturn']