@alwatr/async-queue
TypeScript icon, indicating that this package has built-in type declarations

1.2.7 • Public • Published

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);
    // Simulate a long task
    await waitForTimeout(1000);
  });
  console.log('longTask %s end', n);
}

// run the tasks parallel
longTask(1);
longTask(2);
longTask(3).then(() => console.log('longTask 3 resolved'));
longTask(4);

/*
Output:

  longTask(1)
  longTask(2)
  longTask(3)
  longTask(4)
  longTask 1 start
  longTask 1 end
  longTask 2 start
  longTask 2 end
  longTask 3 start
  longTask 3 end
  longTask 3 resolved
  longTask 4 start
  longTask 4 end

*/

Package Sidebar

Install

npm i @alwatr/async-queue

Weekly Downloads

69

Version

1.2.7

License

MIT

Unpacked Size

21.3 kB

Total Files

12

Last publish

Collaborators

  • alimd