1.1.0 • Published 4 years ago

consumer-queue v1.1.0

Weekly downloads
112
License
BSD-3-Clause
Repository
github
Last release
4 years ago

consumer-queue

Build Status Coverage Status

This module implements a simple unbounded producer-consumer queue (similar to a BlockingQueue in Java). Multiple asynchronous tasks can push data, and one task can pull data from the queue and process it.

Installation

npm install consumer-queue

Usage

On the consumer side:

const ConsumerQueue = require('consumer-queue');
const queue = new ConsumerQueue();
function loop() {
    return queue.pop().then((value) => {
        // ... do something with value ...
        return loop();
    });
}

On the producer side:

// ... produce value ...
queue.push(value);
// ... produce second value ...
queue.push(value);

API

Class ConsumerQueue

constructor

constructor()

Construct a new empty queue.

method push

function push(value : any)

Push a new value at the end of the queue

method hasWaiter

function hasWaiter() : bool

Returns true if a consumer is currently waiting for the next value, false otherwise.

method cancelWait

function cancelWait(err : Error?)

If a consumer is currently waiting on the queue, causes the consumer to stop waiting. The consumer promise will be rejected with err, if given, or a generic error otherwise.

method pop

function pop() : Promise<any>

Asynchronously returns the next value in queue. This method returns a promise that will be fulfilled immediately if the queue already contains a value, and will be fulfilled when the producer calls push() otherwise.

method tryPop

function tryPop() : any?

Synchronously checks for the presence of a value in queue, and pops it if so. This method returns null if the queue is empty.

1.1.0

4 years ago

1.0.2

4 years ago

1.0.1

6 years ago

1.0.0

6 years ago