Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/mvila/co-priority-queue

A simple priority queue for co
https://github.com/mvila/co-priority-queue

Last synced: about 1 month ago
JSON representation

A simple priority queue for co

Awesome Lists containing this project

README

        

# co-priority-queue [![Build Status](https://travis-ci.org/mvila/co-priority-queue.svg?branch=master)](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.