Have ideas to improve npm?Join in the discussion! »

    fastseries

    2.0.0 • Public • Published

    fastseries

    ci npm version Coverage Status Dependency Status

    Zero-overhead series function call for node.js. Also supports each and map!

    If you need zero-overhead parallel function call, check out fastparallel.

    js-standard-style

    Example for series call

    var series = require('fastseries')({
      // if you want the results, then here you are
      results: true
    })
     
    series(
      {}, // what will be this in the functions
      [something, something, something], // functions to call
      42, // the first argument of the functions
      done // the function to be called when the series ends
    )
     
    function late (arg, cb) {
      console.log('finishing', arg)
      cb(null, 'myresult-' + arg)
    }
     
    function something (arg, cb) {
      setTimeout(late, 1000, arg, cb)
    }
     
    function done (err, results) {
      console.log('series completed, results:', results)
    }

    Example for each and map calls

    var series = require('fastseries')({
      // if you want the results, then here you are
      // passing false disables map
      results: true
    })
     
    series(
      {}, // what will be this in the functions
      something, // functions to call
      [1, 2, 3], // the first argument of the functions
      done // the function to be called when the series ends
    )
     
    function late (arg, cb) {
      console.log('finishing', arg)
      cb(null, 'myresult-' + arg)
    }
     
    function something (arg, cb) {
      setTimeout(late, 1000, arg, cb)
    }
     
    function done (err, results) {
      console.log('series completed, results:', results)
    }

    Caveats

    The done function will be called only once, even if more than one error happen.

    This library works by caching the latest used function, so that running a new series does not cause any memory allocations.

    Benchmarks

    Benchmark for doing 3 calls setImmediate 1 million times:

    benchSetImmediate*1000000: 2460.623ms
    benchAsyncSeries*1000000: 3064.569ms
    benchAsyncEachSeries*1000000: 2913.525ms
    benchAsyncMapSeries*1000000: 3020.794ms
    benchNeoSeries*1000000: 2617.064ms
    benchNeoEachSeries*1000000: 2621.672ms
    benchNeoMapSeries*1000000: 2611.294ms
    benchTinyEachAsync*1000000: 2706.457ms
    benchFastSeries*1000000: 2540.653ms
    benchFastSeriesNoResults*1000000: 2538.674ms
    benchFastSeriesEach*1000000: 2534.856ms
    benchFastSeriesEachResults*1000000: 2545.394ms
    

    Benchmarks taken on Node 12.16.1 on a dedicated server.

    See bench.js for mode details.

    License

    ISC

    Install

    npm i fastseries

    DownloadsWeekly Downloads

    61,706

    Version

    2.0.0

    License

    ISC

    Unpacked Size

    18.7 kB

    Total Files

    8

    Last publish

    Collaborators

    • avatar