gate-executor
A work queue that can be gated, stopping to wait for sub-queues to complete.
Annotated Source
A work execution queue that provides gating. Work items submitted to
the queue are called in order, and execute concurrently. However, if
the queue is gated, then a sub-queue is created, and work items
added to the sub-queue must complete first.
Gating operates to any depth, allowing you to form a tree-structured
queue that must complete breadth-first.
The queue also handles timeouts, so that failing work items do not
block processing. Timeouts use a shared setInterval
, so are nice and
efficient.
Used by the Seneca microservice framework to
implement plugin initialisation.
Usage
var GateExecutor = require('gate-executor')
var ge = GateExecutor()
ge.add({
fn: function first (done) {
console.log('first')
done()
}
})
var subge = ge.gate()
ge.add({
fn: function second (done) {
console.log('second')
done()
}
})
subge.add({
fn: function second (done) {
console.log('third')
done()
}
})
ge.start(function () {
console.log('done')
done()
})
For detailed information, and API descriptions, see the
Annotated Source
Support
If you're using this module, feel free to contact me on twitter if you
have any questions! :) @rjrodger
Testing
npm test