Skip to content

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

ParameterTypeDefault valueDescription
concurrencynumber1Max number of tasks that run at the same time.
delayMsnumber100Milliseconds 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

ParameterType
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']

Matterway Assistant SDK Documentation