72 lines
1.5 KiB
Markdown
72 lines
1.5 KiB
Markdown
# co-priority-queue [](https://travis-ci.org/mvila/co-priority-queue)
|
|
|
|
A simple priority queue for co.
|
|
|
|
## Installation
|
|
|
|
In your project folder, type:
|
|
|
|
npm install co-priority-queue
|
|
|
|
## Example
|
|
|
|
Queue with one consumer:
|
|
|
|
var co = require('co');
|
|
var Queue = require('co-priority-queue');
|
|
|
|
co(function *(){
|
|
var queue = new Queue;
|
|
queue.push('a', 1);
|
|
queue.push('b', 2);
|
|
queue.push('c', 2);
|
|
console.log(yield queue.next());
|
|
console.log(yield queue.next());
|
|
console.log(yield queue.next());
|
|
})();
|
|
|
|
The output is:
|
|
|
|
b
|
|
c
|
|
a
|
|
|
|
Queue with multiple consumers:
|
|
|
|
var co = require('co');
|
|
var Queue = require('co-priority-queue');
|
|
|
|
co(function *(){
|
|
queue.push('a', 1);
|
|
queue.push('b', 2);
|
|
queue.push('c', 2);
|
|
var consumers = [queue.next(), queue.next(), queue.next()];
|
|
console.log(yield consumers);
|
|
})();
|
|
|
|
The output is:
|
|
|
|
['b', 'c', 'a']
|
|
|
|
## API
|
|
|
|
### Queue()
|
|
|
|
Create a new priority queue.
|
|
|
|
### Queue#push(data, priority)
|
|
|
|
Add `data` into the queue with the specified `priority`.
|
|
|
|
### Queue#next()
|
|
|
|
Return the data with the highest priority. If the queue is empty, waits until a new data is added.
|
|
|
|
## Credits
|
|
|
|
API and implementation heavily inspired from [co-queue](https://github.com/segmentio/co-queue) created by Julian Gruber. Thanks to him.
|
|
|
|
## License
|
|
|
|
co-priority-queue is distributed under the MIT license.
|