pace-yourself
A priority queue and consumer
PriorityQueue
Class representing a priority queue
Kind: global class
- PriorityQueue
- new PriorityQueue([priorities])
- .enqueue(entry, [priority]) ⇒
promise
- .dequeue() ⇒
function
new PriorityQueue([priorities])
constructor - Create a priority queue
Param | Type | Default | Description |
---|---|---|---|
[priorities] | array |
[1, 2] |
An array of priority levels the queue should support from highest to lowest |
Example
const queue = new PriorityQueue();
priorityQueue.enqueue(entry, [priority]) ⇒ promise
enqueue - Enqueue a function
Kind: instance method of PriorityQueue
Returns: promise
- A promise that resolves with enqueued function
Param | Type | Default | Description |
---|---|---|---|
entry | function |
| The function to enqueue | |
[priority] | number |
this.priorities[0] |
The priority of the function to enqueue |
Example
const queue = new PriorityQueue();
queue.enqueue(() => 'ayy', 2);
// → returns a promise that resolves with 'ayy'
priorityQueue.dequeue() ⇒ function
dequeue - Dequeue the next item in the highest priority queue with items
Kind: instance method of PriorityQueue
Returns: function
- The dequeued function
Example
const queue = new PriorityQueue();
queue.enqueue(() => 'lmao', 2).then(result => console.log(result));
queue.dequeue()();
// → resolves the promise, logging 'lmao'
QueueConsumer
Class representing a queue consumer
Kind: global class
new QueueConsumer(queue, [delay])
constructor - Create a queue consumer
Param | Type | Default | Description |
---|---|---|---|
queue | PriorityQueue |
| The queue to consume | |
[delay] | number |
2500 |
The interval, in ms, to wait between dequeueing functions |
Example
const queue = new PriorityQueue();
const consumer = new QueueConsumer(queue, 86400000);
queueConsumer.start()
start - Start consuming the queue
Kind: instance method of QueueConsumer
queueConsumer.stop()
stop - Stop consuming the queue
Kind: instance method of QueueConsumer
Scripts
test
– run the tests
npm run test
coverage
– generate and view code coverage as HTML
npm run coverage
lint
– lint the codebase
npm run lint
readme
– generate the README
npm run readme
compile
– compile the code
npm run compile
License
MIT @ Flip