fastseries
v2.0.0
Published
Zero-overhead asynchronous series/each/map function calls
Downloads
920,597
Readme
fastseries
Zero-overhead series function call for node.js.
Also supports each
and map
!
If you need zero-overhead parallel function call, check out fastparallel.
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