Input task payload type.
Worker result type.
Async worker function used to process each task.
Optionaloptions: QueueOptionsOptional queue configuration.
A TaskQueue instance with enqueue, flow-control, and cancellation APIs.
import { queue } from "@vgerbot/async";
const q = queue(
async (task: { id: number; ms: number }, token) => {
await token.sleep(task.ms);
return `done:${task.id}`;
},
{ concurrency: 2 },
);
const p1 = q.push({ id: 1, ms: 100 });
const p2 = q.push({ id: 2, ms: 50 });
const p3 = q.push({ id: 3, ms: 10 });
const results = await Promise.all([p1, p2, p3]);
await q.onIdle();
// results -> ["done:1", "done:2", "done:3"]
// q.idle -> true
Creates a concurrency-limited async task queue.
The returned queue processes tasks in FIFO order while allowing up to
options.concurrencytasks to run at the same time.