a simple fifo queue
npm install SimpleQueueA simple FIFO queue
npm install SimpleQueue
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.
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. |
#### 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_
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
#### paused
• paused: boolean = false
_Defined in index.ts:16_
#### abort
▸ abort(): void
_Defined in index.ts:48_
Clears the queue (can't stop running processes).
Returns: void
---
#### pause
▸ pause(): void
_Defined in index.ts:57_
Pause the queue execution.
Will not stop already in-flight items.
Returns: void
---
#### push
▸ push(props: T): void
_Defined in index.ts:41_
Adds an element to the queue.
##### Parameters:
| Name | Type |
| ------- | ---- |
| props | T |
Returns: void
---
#### resume
▸ resume(): void
_Defined in index.ts:64_
Resume the queue execution,
and catch up with remaining items.
Returns: void
``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.