2.0.1 • Published 6 years ago

gate-executor v2.0.1

Weekly downloads
9,097
License
MIT
Repository
github
Last release
6 years ago

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
3.1.1

4 years ago

3.0.0

5 years ago

2.1.0

6 years ago

2.0.1

6 years ago

2.0.0

6 years ago

1.1.1

9 years ago

1.1.0

9 years ago

1.0.0

9 years ago

0.4.0

9 years ago

0.3.2

10 years ago

0.3.1

10 years ago

0.3.0

10 years ago

0.2.3

10 years ago

0.2.2

11 years ago

0.2.1

11 years ago

0.2.0

11 years ago

0.1.0

11 years ago