Async Queue
A queue that executes async tasks in order like mutex and semaphore methodology for javascript and typescript.
Installation
yarn add @alwatr/async-queue
Usage
import {AsyncQueue} from '@alwatr/async-queue';
import {waitForTimeout} from '@alwatr/wait';
const queue = new AsyncQueue();
async function longTask(n) {
console.log('longTask(%s)', n);
await queue.push('longTaskId', async () => {
console.log('longTask %s start', n);
await waitForTimeout(1000);
});
console.log('longTask %s end', n);
}
longTask(1);
longTask(2);
longTask(3).then(() => console.log('longTask 3 resolved'));
longTask(4);