You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
iotcat
74338fbb93
|
5 years ago | |
---|---|---|
.. | ||
.npmignore | 5 years ago | |
.travis.yml | 5 years ago | |
LICENSE | 5 years ago | |
README.md | 5 years ago | |
bench.js | 5 years ago | |
example.js | 5 years ago | |
package.json | 5 years ago | |
series.js | 5 years ago | |
test.js | 5 years ago |
README.md
fastseries
Zero-overhead series function call for node.js.
Also supports each
and map
!
Benchmark for doing 3 calls setImmediate
1 million times:
- non-reusable
setImmediate
: 3887ms async.series
: 5981msasync.eachSeries
: 5087msasync.mapSeries
: 5540msneoAsync.series
: 4338msneoAsync.eachSeries
: 4195msneoAsync.mapSeries
: 4237mstiny-each-async
: 4575msfastseries
with results: 4096msfastseries
without results: 4063msfastseries
map: 4032msfastseries
each: 4168ms
These benchmarks where taken via bench.js
on node 4.2.2, on a MacBook
Pro Retina 2014.
If you need zero-overhead parallel function call, check out fastparallel.
Example for series call
var series = require('fastseries')({
// this is a function that will be called
// when a series completes
released: completed,
// 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)
}
function completed () {
console.log('series completed!')
}
Example for each and map calls
var series = require('fastseries')({
// this is a function that will be called
// when a series completes
released: completed,
// 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)
}
function completed () {
console.log('series completed!')
}
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.
License
ISC