Wondering what’s next for npm?Check out our public roadmap! »

    gate-executor

    3.0.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

    7,659

    Version

    3.0.0

    License

    MIT

    Unpacked Size

    23.6 kB

    Total Files

    5

    Last publish

    Collaborators

    • avatar
    • avatar