Skip to content

Latest commit

 

History

History
46 lines (32 loc) · 1.44 KB

README.md

File metadata and controls

46 lines (32 loc) · 1.44 KB

async-queue.js

Badge LICENSE Node npm version

A library to limit the number of concurrent asynchronous tasks.

The queue will start immediately when the task is added to the queue.

Installation

npm install @axetroy/async-queue --save

Usage

// 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();

License

The Anti 996 License