# SimpleQueue

> a simple fifo queue

Latest version **2.0.0** (published 2026-03-17) · MIT license · 0 weekly downloads

## Install

```sh
npm install SimpleQueue
pnpm add SimpleQueue
yarn add SimpleQueue
bun add SimpleQueue
```

## Health

**Score 70/100 (B)** — status: stable.

Positive: has types; esm support; no vulnerabilities; has provenance; high maintenance score; high quality score.

Warnings: low downloads.

## Facts

| | |
|---|---|
| Version | 2.0.0 |
| Published | 2026-03-17 |
| First published | 2011-12-01 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Node | >=20.19.0 |
| Dependencies | 0 |
| Unpacked size | 11.8 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Provenance | attested (GitHub Actions) |
| GitHub stars | 9 |
| Author | Felix Boehm |
| Maintainers | fb55 |

## Links

- npm: https://www.npmjs.com/package/SimpleQueue
- Repository: https://github.com/fb55/simplequeue
- Homepage: https://github.com/fb55/simplequeue#readme
- Issues: https://github.com/fb55/simplequeue/issues
- Funding: https://github.com/sponsors/fb55
- npm.io page: https://npm.io/package/SimpleQueue

## Recent versions

- 2.0.0 (latest) — 2026-03-17
- 1.0.0 — 2020-10-21
- 0.0.1 — 2011-12-01

## README

# SimpleQueue

[![NPM version](http://img.shields.io/npm/v/SimpleQueue.svg?style=flat)](https://npmjs.org/package/SimpleQueue)
[![Node.js CI](https://github.com/fb55/SimpleQueue/actions/workflows/nodejs-test.yml/badge.svg)](https://github.com/fb55/SimpleQueue/actions/workflows/nodejs-test.yml)
[![Coverage](http://img.shields.io/coveralls/fb55/SimpleQueue.svg?style=flat)](https://coveralls.io/r/fb55/SimpleQueue)

A simple FIFO queue

    npm install SimpleQueue

## What is this?

There are plenty queues for node, but even those branded as FIFO (first in first out) usually destroy the order.
Eg. when mapping over an RSS feeds & doing something with all of the pages,
you need to know what element had what position - so I created this little helper.

## API

### Class: SimpleQueue\<T, R>

A simple FIFO queue, delivering items in order.

#### Type parameters

| Name | Default | Description                              |
| ---- | ------- | ---------------------------------------- |
| `T`  | -       | Type that is pushed onto the stack.      |
| `R`  | void    | Type that the passed `callback` maps to. |

### Constructors

#### constructor

\+ **new SimpleQueue**(`worker`: (element: T, callback: (error: Error \| null, result: R) => void) => void, `callback`: (error: Error \| null, result: R, element: T) => void, `done?`: undefined \| () => void, `concurrent?`: number): `SimpleQueue`

_Defined in [index.ts:16](https://github.com/fb55/SimpleQueue/blob/master/src/index.ts#L16)_

Creates a new FIFO queue.

##### Parameters:

| Name         | Type                                                                      | Default value | Description                                                |
| ------------ | ------------------------------------------------------------------------- | ------------- | ---------------------------------------------------------- |
| `worker`     | (element: T, callback: (error: Error \| null, result: R) => void) => void | -             | Method to call for each child. Args:                       |
| `callback`   | (error: Error \| null, result: R, element: T) => void                     | -             | Method to call when an element was processed.              |
| `done?`      | undefined \| () => void                                                   | -             | Method to call once the stack is cleared.                  |
| `concurrent` | number                                                                    | 20            | Number of elements to process in parallel. Defaults to 20. |

**Returns:** `SimpleQueue`

### Properties

#### paused

• **paused**: boolean = false

_Defined in [index.ts:16](https://github.com/fb55/SimpleQueue/blob/master/src/index.ts#L16)_

### Methods

#### abort

▸ **abort**(): void

_Defined in [index.ts:48](https://github.com/fb55/SimpleQueue/blob/master/src/index.ts#L48)_

Clears the queue (can't stop running processes).

**Returns:** void

---

#### pause

▸ **pause**(): void

_Defined in [index.ts:57](https://github.com/fb55/SimpleQueue/blob/master/src/index.ts#L57)_

Pause the queue execution.
Will not stop already in-flight items.

**Returns:** void

---

#### push

▸ **push**(`properties`: T): void

_Defined in [index.ts:41](https://github.com/fb55/SimpleQueue/blob/master/src/index.ts#L41)_

Adds an element to the queue.

##### Parameters:

| Name    | Type |
| ------- | ---- |
| `properties` | T    |

**Returns:** void

---

#### resume

▸ **resume**(): void

_Defined in [index.ts:64](https://github.com/fb55/SimpleQueue/blob/master/src/index.ts#L64)_

Resume the queue execution,
and catch up with remaining items.

**Returns:** void

## Example

```js
import SimpleQueue from "SimpleQueue";

const queue = new SimpleQueue(
    (element, callback) => {
        // Set
        setTimeout(() => callback(null, element / 1000), element);
    },
    (err, result, element) => {
        console.log(result);
    },
    () => {
        console.log("done");
    },
    4,
);

queue.push(1000);
queue.push(5000);
queue.push(3000);
queue.push(4000);
queue.push(8000);
queue.push(2000);
queue.push(0);
```

Output:

    1, 5, 3, 4, 8, 2, 0, "done"

This takes 9 seconds to run.

---
_Source: https://npm.io/package/SimpleQueue · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
