Get unlimited public & private packages + package-based permissions with npm Pro.Get started »

gate-executor

2.1.0 • Public • Published

gate-executor

npm version Build Status Coverage Status Dependency Status Gitter chat

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()
  }
})
 
// create a gate
var subge = ge.gate()
 
ge.add({
  fn: function second (done) {
    console.log('second')
    done()
  }
})
 
// this needs to complete before 'second' can run
subge.add({
  fn: function second (done) {
    console.log('third')
    done()
  }
})
 
ge.start(function () {
  console.log('done')
  done()
})
 
// prints:
//   first
//   third
//   second
//   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

Install

npm i gate-executor

DownloadsWeekly Downloads

8,440

Version

2.1.0

License

MIT

Unpacked Size

17 kB

Total Files

4

Last publish

Collaborators

  • avatar
  • avatar