kebab
Half queue half pubsub. Super small (< 30 loc) and simple queue that supports subscribers.
var kebab = kb = items = 10 consumers = 4; { var id = --items; if id ; } { kb;} for var i = 0; i < consumers; i++ ; ;
Outputs:
Producer enqueueing item 9
Consumer 0 handling item 9 at (3s:879ms).
Producer enqueueing item 8
Consumer 1 handling item 8 at (3s:942ms).
Producer enqueueing item 7
Consumer 2 handling item 7 at (3s:995ms).
Producer enqueueing item 6
Consumer 3 handling item 6 at (4s:48ms).
Producer enqueueing item 5
Producer enqueueing item 4
Consumer 2 handling item 5 at (4s:99ms).
Producer enqueueing item 3
Consumer 3 handling item 4 at (4s:150ms).
Producer enqueueing item 2
Producer enqueueing item 1
Consumer 2 handling item 3 at (4s:202ms).
Consumer 3 handling item 2 at (4s:252ms).
Consumer 2 handling item 1 at (4s:303ms).
Install
npm install kebab
Run Tests
npm test
Run example
With nodejs
npm run-script example
In the Browser
open example.html
Features
- works server side
- works in the browser
- supports async module loaders like requirejs
API
create a kebab
var kebab = kb = ;
enqueue
kebab.enqueue(arg1 [, arg2, .., argn])
arg1 .. argn are the arguments you want to pass when a subscriber callback is called.
Example:
kb;
once
kebab.once(callback)
Subscribe to be called back with queued arguments.
If queue is currently holding arguments, callback will be invoked with them immediately.
Otherwise the callback will be invoked one time when arguments are enqueued in the future.
Example:
kb;