consumer-queue
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 = ;const queue = ; { return queue;}
On the producer side:
// ... produce value ...queue;// ... produce second value ...queue;
API
Class ConsumerQueue
constructor
Construct a new empty queue.
method push
Push a new value at the end of the queue
method hasWaiter
: bool
Returns true
if a consumer is currently waiting for the next value, false
otherwise.
method cancelWait
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
: 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
: 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.