New:Socket for Asana Is Now Available.Learn more
Get Started

js-queue

Package Overview
Dependencies
Maintainers
1
Versions
11
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

js-queue

A tiny FIFO task queue with explicit flow control for Node and browsers

Source
npmnpm
Version
3.0.0
Version published
Weekly downloads
680K
-17.38%
Maintainers
1
Weekly downloads
 
Created
Source

js-queue — explicit FIFO flow control for JavaScript

js-queue

A tiny first-in-first-out task queue with explicit flow control. Add functions, let the queue start automatically, and call this.next() when each task is ready to release the next one.

Documentation · Quick start · API · Patterns · Browser use · Examples · Testing

CI Pages npm version npm downloads license

Install

npm install js-queue

Native ES modules:

import Queue from 'js-queue';

const queue=new Queue;

queue.add(
    function(){
        console.log('first');
        this.next();
    },
    function(){
        console.log('second');
        this.next();
    }
);

CommonJS remains supported:

const Queue=require('js-queue');

The flow contract

js-queue does not guess when a task is complete. A task releases the next item by calling this.next()—immediately, from a callback, or after an awaited operation.

queue.add(function(){
    fetch('/work')
        .then(handleResponse)
        .finally(()=>this.next());
});

That explicit hand-off makes the same queue useful for synchronous steps, callback APIs, network work, connection gates, and manually controlled pipelines.

Public surface

MemberTypePurpose
add(...tasks)methodValidate and append functions; auto-start when idle.
next()methodRun the next FIFO task when the queue is not stopped.
clear()methodRemove pending tasks and return the new empty array.
contentsgetter/setterRead or replace the pending function array.
sizegetterNumber of pending tasks.
runninggetterWhether a task currently owns the queue.
autoRunbooleanStart automatically after add(); defaults to true.
stopbooleanHold execution without discarding pending work.

Every task receives the queue as this. Invalid tasks are rejected before any item from the same add() call is appended. If a task throws synchronously, the queue returns to an idle, recoverable state and preserves the remaining work.

Entry points

ImportFormatUse
js-queueESM or CommonJSConditional primary entry.
js-queue/queue.jsESM or CommonJSCompatibility path to the queue.
js-queue/queue-vanilla.jsclassic browser scriptPublishes globalThis.Queue.
js-queue/stackESM or CommonJSThe modernized easy-stack 2.0 LIFO entry.

The runtime supports Node.js 12.22 and newer. The development suite uses vanilla-test 2.1.1 on Node.js 22.12 or newer, while a test-tooling-free compatibility runner executes all behavior and package contracts on older supported Node releases with production dependencies only.

Test and coverage evidence

The shared behavioral suite runs unchanged in Node and real Google Chrome through vanilla-test. It covers FIFO ordering, manual flow, stop/resume gates, active-task additions, clearing, replacement contents, validation, thrown-task recovery, asynchronous hand-offs, and idle behavior.

npm test
npm run coverage

Both native V8 collectors enforce 100% statement, branch, function, and line coverage for the shipped ESM queue. Package tests independently verify ESM, CommonJS, classic-browser, and stack entry points. Server tests verify pages, content types, missing files, malformed URLs, and traversal protection. Documentation tests verify every page, local target, workflow, and generated header asset.

Node coverage report · Chrome coverage report

Version 3

Version 3 adds native ESM, conditional CommonJS compatibility, validated task inputs, observable size and running state, recoverable synchronous errors, modern package boundaries, and the new documentation site. Existing require('js-queue'), require('js-queue/stack.js'), and classic <script> consumers have supported paths.

Read the migration guide and changelog before upgrading an application that depends on constructor enumeration, non-function queue entries, or Node versions older than 12.22.

License

MIT

Keywords

queue

FAQs

Package last updated on 16 Aug 2026

Related posts