A library to limit the number of concurrent asynchronous tasks.
The queue will start immediately when the task is added to the queue.
npm install @axetroy/async-queue --save
// import via esm
import { AsyncQueue } from "@axetroy/async-queue";
// import via cjs
const { AsyncQueue } = require("@axetroy/async-queue");
import { AsyncQueue } from "@axetroy/async-queue";
const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
const queue = new AsyncTaskQueue({ concurrency: 2 });
// Add task to the queue
queue.enqueue(() => delay(1000).then(() => console.log("Task 1 completed")));
queue.enqueue(() => delay(500).then(() => console.log("Task 2 completed")));
queue.enqueue(() => delay(300).then(() => console.log("Task 3 completed")));
queue.enqueue(() => delay(400).then(() => console.log("Task 4 completed")));
// Wait for all tasks to complete
await queue.waitForAll();
The Anti 996 License