Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

@alwatr/async-queue

Alwatr1.4kMPL-2.05.5.25TypeScript support: included

A queue that executes async tasks in order like mutex and semaphore methodology for javascript and typescript.

alwatr, async, async-queue, cross-platform, ECMAScript, esm, javascript, lock, module, mutex, nanolib, node, nodejs, queue, semaphore, semaphore-slim, SemaphoreSlim, spin-lock, SpinLock, typescript, util, utility, utils

readme

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/delay';

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

*/

Sponsors

The following companies, organizations, and individuals support Nanolib ongoing maintenance and development. Become a Sponsor to get your logo on our README and website.

Contributing

Contributions are welcome! Please read our contribution guidelines before submitting a pull request.

changelog

Change Log

All notable changes to this project will be documented in this file. See Conventional Commits for commit guidelines.

5.5.25 (2025-12-10)

Note: Version bump only for package @alwatr/async-queue

5.5.24 (2025-11-18)

🐛 Bug Fixes

  • add type imports from @alwatr/nano-build and @alwatr/type-helper across multiple packages (5ab7f15)

🔨 Code Refactoring

  • remove unnecessary type declarations from tsconfig.json files (89bcc7d)

5.5.23 (2025-11-15)

Note: Version bump only for package @alwatr/async-queue

5.5.22 (2025-11-15)

Note: Version bump only for package @alwatr/async-queue

5.5.21 (2025-11-04)

Note: Version bump only for package @alwatr/async-queue

5.5.20 (2025-10-06)

🔗 Dependencies update

  • bump the npm-dependencies group with 4 updates (9825815)

5.5.19 (2025-09-27)

🧹 Miscellaneous Chores

  • exclude test files from package distribution (86f4f2f)

5.5.18 (2025-09-22)

Note: Version bump only for package @alwatr/async-queue

5.5.17 (2025-09-22)

Note: Version bump only for package @alwatr/async-queue

5.5.16 (2025-09-21)

Note: Version bump only for package @alwatr/async-queue

5.5.15 (2025-09-20)

Note: Version bump only for package @alwatr/async-queue

5.5.14 (2025-09-19)

Note: Version bump only for package @alwatr/async-queue

5.5.13 (2025-09-15)

Note: Version bump only for package @alwatr/async-queue

5.5.12 (2025-09-13)

Note: Version bump only for package @alwatr/async-queue

5.5.11 (2025-09-13)

🧹 Miscellaneous Chores

  • remove package-tracer dependency and related code from fetch package (96fe4e9)

5.5.10 (2025-09-09)

🧹 Miscellaneous Chores

  • remove trailing newlines from contributing sections in README files (e8ab1bc)

5.5.9 (2025-09-06)

Note: Version bump only for package @alwatr/async-queue

5.5.8 (2025-09-05)

🔗 Dependencies update

  • update jest to version 30.1.3 and @types/node to version 22.18.1 (754212b)

5.5.7 (2025-09-01)

🔗 Dependencies update

  • update lerna-lite dependencies to version 4.7.3 and jest to 30.1.2 (95d7870)

5.5.6 (2025-08-23)

Note: Version bump only for package @alwatr/async-queue

5.5.5 (2025-08-23)

🐛 Bug Fixes

  • update license from AGPL-3.0-only to MPL-2.0 (d20968e)
  • update package versions in multiple package.json files (7638b1c)

🔨 Code Refactoring

  • Updated all package.json files in the project to change dependency version specifiers from "workspace:^" to "workspace:*" for consistency and to allow for more flexible version resolution. (db6a4f7)

🧹 Miscellaneous Chores

  • reformat all package.json files (ceda45d)

🔗 Dependencies update

  • update TypeScript and Jest versions across all packages to improve compatibility and performance (31baf36)

5.5.4 (2025-08-23)

Code Refactoring

  • Updated all package.json files in the project to change dependency version specifiers from "workspace:^" to "workspace:*" for consistency and to allow for more flexible version resolution. (db6a4f7) by @alimd

5.5.3 (2025-04-15)

Note: Version bump only for package @alwatr/async-queue

5.5.2 (2025-04-01)

Note: Version bump only for package @alwatr/async-queue

5.5.1 (2025-03-18)

Note: Version bump only for package @alwatr/async-queue

5.5.0 (2025-03-06)

Miscellaneous Chores

  • update username casing in changelog entries (9722ac9) by @

Dependencies update

  • bump the development-dependencies group across 1 directory with 11 updates (720c395) by @dependabot[bot]

5.4.0 (2025-02-18)

5.3.0 (2025-02-03)

Miscellaneous Chores

Dependencies update

  • bump the development-dependencies group across 1 directory with 11 updates (cb79d07) by @
  • update typescript and @types/node to version 5.7.3 and 22.13.0 respectively across multiple packages (ddab05b) by @

5.0.0 (2024-11-02)

⚠ BREAKING CHANGES

  • To simplify version management and ensure consistency, all nanolib packages now use the same version as @alwatr/nanolib. This may require updates to your project's dependencies.

Code Refactoring

  • use the same version as @alwatr/nanolib (60eb860) by @

5.3.0 (2025-02-03)

Miscellaneous Chores

  • edit README (3860b3d) by @ArmanAsadian

Dependencies update

  • bump the development-dependencies group across 1 directory with 11 updates (cb79d07) by @dependabot[bot]
  • update typescript and @types/node to version 5.7.3 and 22.13.0 respectively across multiple packages (ddab05b) by @alimd

5.0.0 (2024-11-02)

⚠ BREAKING CHANGES

  • To simplify version management and ensure consistency, all nanolib packages now use the same version as @alwatr/nanolib. This may require updates to your project's dependencies.

Features

  • async-queue: A simple async queue like mutex and semaphore methodology for javascript and typescript. (e753ff2) by @
  • async-queue: add isRunning (2e54a0a) by @
  • async-queue: Add waitForAllFinish method to AsyncQueue class (3fdef04) by @
  • async-queue: use package-tracer (f570030) by @
  • AsyncQueue: generic type for push method (aec6710) by @
  • AsyncQueue: waitForFinish (47decb4) by @

Bug Fixes

  • async-queue: remove wait deps (83b2e11) by @

Code Refactoring

  • prevent side-effects (01e00e1) by @
  • update Dictionary type definitions (c94cbc4) by @
  • use new type-helper global types and remove all import types (08b5d08) by @
  • use the same version as @alwatr/nanolib (60eb860) by @
  • wait: rename package to delay (cf8c45c) by @

Miscellaneous Chores

  • async-queue: change the license to AGPL-3.0 (e253149) by @
  • deps-dev: bump the development-dependencies group with 3 updates (0e0ec0f) by @
  • deps: update (1a45030) by @
  • deps: update (8e70dff) by @
  • deps: update (f0b60d2) by @
  • fix all typescript reference (dea4c44) by @
  • include LICENSE and LEGAL files to publish (09f366f) by @
  • rename logger env (38443ad) by @
  • Update build and lint scripts (392d0b7) by @
  • Update debug command in package.json (be8403d) by @
  • Update package.json exports for @alwatr packages (dacb362) by @

Dependencies update

  • bump @types/node (3d80fed) by @
  • bump the development-dependencies group across 1 directory with 10 updates (9ed98ff) by @
  • bump the development-dependencies group with 10 updates (fa4aaf0) by @
  • bump the development-dependencies group with 2 updates (be5d6c2) by @
  • upd (451d025) by @
  • update (c36ed50) by @
  • update all (53342f6) by @
  • update all dependencies (1e0c30e) by @
  • update all dependencies (0e908b4) by @
  • upgrade (6dbd300) by @

1.3.8 (2024-11-02)

Note: Version bump only for package @alwatr/async-queue

1.3.7 (2024-10-25)

Note: Version bump only for package @alwatr/async-queue

1.3.6 (2024-10-12)

Note: Version bump only for package @alwatr/async-queue

1.3.5 (2024-10-11)

Code Refactoring

  • prevent side-effects (01e00e1) by @mohammadhonarvar

1.3.4 (2024-10-11)

Miscellaneous Chores

  • include LICENSE and LEGAL files to publish (09f366f) by @alimd

1.3.3 (2024-10-11)

Note: Version bump only for package @alwatr/async-queue

1.3.2 (2024-10-10)

Dependencies update

  • bump the development-dependencies group with 10 updates (fa4aaf0) by @dependabot[bot]

1.3.1 (2024-10-08)

Note: Version bump only for package @alwatr/async-queue

1.3.0 (2024-09-29)

Features

  • async-queue: use package-tracer (f570030) by @mohammadhonarvar

Code Refactoring

  • update Dictionary type definitions (c94cbc4) by @alimd
  • use new type-helper global types and remove all import types (08b5d08) by @alimd
  • wait: rename package to delay (cf8c45c) by @alimd

Miscellaneous Chores

  • async-queue: change the license to AGPL-3.0 (e253149) by @ArmanAsadian
  • Update build and lint scripts (392d0b7) by @alimd

Dependencies update

  • bump @types/node (3d80fed) by @dependabot[bot]

1.2.11 (2024-09-21)

Note: Version bump only for package @alwatr/async-queue

1.2.10 (2024-09-15)

Dependencies update

  • bump the development-dependencies group across 1 directory with 10 updates (9ed98ff) by @dependabot[bot]
  • update (c36ed50) by @alimd

1.2.9 (2024-08-31)

Miscellaneous Chores

1.2.8 (2024-08-31)

Dependencies update

  • update all dependencies (1e0c30e) by @alimd

1.2.7 (2024-07-04)

Dependencies update

  • update all dependencies (0e908b4) by @

1.2.6 (2024-05-12)

Dependencies update

1.2.5 (2024-04-25)

Note: Version bump only for package @alwatr/async-queue

1.2.4 (2024-03-28)

Note: Version bump only for package @alwatr/async-queue

1.2.3 (2024-01-31)

Miscellaneous Chores

1.2.2 (2024-01-24)

Note: Version bump only for package @alwatr/async-queue

1.2.1 (2024-01-20)

Note: Version bump only for package @alwatr/async-queue

1.2.0 (2024-01-16)

Features

  • async-queue: Add waitForAllFinish method to AsyncQueue class (3fdef04) by @alimd

1.1.1 (2024-01-16)

Note: Version bump only for package @alwatr/async-queue

1.1.0 (2024-01-08)

Features

  • AsyncQueue: generic type for push method (aec6710) by @alimd
  • AsyncQueue: waitForFinish (47decb4) by @alimd

1.0.2 (2024-01-08)

Note: Version bump only for package @alwatr/async-queue

1.0.1 (2024-01-03)

Note: Version bump only for package @alwatr/async-queue

1.0.0 (2024-01-03)

Bug Fixes

  • async-queue: remove wait deps (83b2e11) by @njfamirm

Features

  • async-queue: A simple async queue like mutex and semaphore methodology for javascript and typescript. (e753ff2) by @alimd
  • async-queue: add isRunning (2e54a0a) by @njfamirm