gate-executor
TypeScript icon, indicating that this package has built-in type declarations

3.1.1 • 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

/gate-executor/

    Package Sidebar

    Install

    npm i gate-executor

    Weekly Downloads

    9,803

    Version

    3.1.1

    License

    MIT

    Unpacked Size

    42.7 kB

    Total Files

    8

    Last publish

    Collaborators

    • rjrodger
    • mihaidma