File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
Neo-Async
Neo-Async is thought to be used as a drop-in replacement for Async, it almost fully covers its functionality and runs faster.
Benchmark is here!
Bluebird's benchmark is here!
Code Coverage#
Installation#
In a browser#
<script src="async.min.js"></script>
In an AMD loader#
require(['async'], function(async) {});
Promise and async/await#
I recommend to use Aigle
.
It is optimized for Promise handling and has almost the same functionality as neo-async
.
Node.js#
standard#
$ npm install neo-async
var async = require('neo-async');
replacement#
$ npm install neo-async
$ ln -s ./node_modules/neo-async ./node_modules/async
var async = require('async');
Bower#
bower install neo-async
Feature#
* not in Async
Collections#
each
eachSeries
eachLimit
forEach
->each
forEachSeries
->eachSeries
forEachLimit
->eachLimit
eachOf
->each
eachOfSeries
->eachSeries
eachOfLimit
->eachLimit
forEachOf
->each
forEachOfSeries
->eachSeries
eachOfLimit
->forEachLimit
map
mapSeries
mapLimit
mapValues
mapValuesSeries
mapValuesLimit
filter
filterSeries
filterLimit
select
->filter
selectSeries
->filterSeries
selectLimit
->filterLimit
reject
rejectSeries
rejectLimit
detect
detectSeries
detectLimit
find
->detect
findSeries
->detectSeries
findLimit
->detectLimit
pick
*pickSeries
*pickLimit
*omit
*omitSeries
*omitLimit
*reduce
inject
->reduce
foldl
->reduce
reduceRight
foldr
->reduceRight
transform
transformSeries
*transformLimit
*sortBy
sortBySeries
*sortByLimit
*some
someSeries
someLimit
any
->some
anySeries
->someSeries
anyLimit
->someLimit
every
everySeries
everyLimit
all
->every
allSeries
->every
allLimit
->every
concat
concatSeries
concatLimit
*
Control Flow#
parallel
series
parallelLimit
tryEach
waterfall
angelFall
*angelfall
->angelFall
*whilst
doWhilst
until
doUntil
during
doDuring
forever
compose
seq
applyEach
applyEachSeries
queue
priorityQueue
cargo
auto
autoInject
retry
retryable
iterator
times
timesSeries
timesLimit
race
Utils#
apply
setImmediate
nextTick
memoize
unmemoize
ensureAsync
constant
asyncify
wrapSync
->asyncify
log
dir
timeout
reflect
reflectAll
createLogger
Mode#
Benchmark#
How to check#
$ node perf
Environment#
- Darwin 17.3.0 x64
- Node.js v8.9.4
- async v2.6.0
- neo-async v2.5.0
- benchmark v2.1.4
Result#
The value is the ratio (Neo-Async/Async) of the average speed.
Collections#
function | benchmark |
---|---|
each/forEach | 2.43 |
eachSeries/forEachSeries | 1.75 |
eachLimit/forEachLimit | 1.68 |
eachOf | 3.29 |
eachOfSeries | 1.50 |
eachOfLimit | 1.59 |
map | 3.95 |
mapSeries | 1.81 |
mapLimit | 1.27 |
mapValues | 2.73 |
mapValuesSeries | 1.59 |
mapValuesLimit | 1.23 |
filter | 3.00 |
filterSeries | 1.74 |
filterLimit | 1.17 |
reject | 4.59 |
rejectSeries | 2.31 |
rejectLimit | 1.58 |
detect | 4.30 |
detectSeries | 1.86 |
detectLimit | 1.32 |
reduce | 1.82 |
transform | 2.46 |
sortBy | 4.08 |
some | 2.19 |
someSeries | 1.83 |
someLimit | 1.32 |
every | 2.09 |
everySeries | 1.84 |
everyLimit | 1.35 |
concat | 3.79 |
concatSeries | 4.45 |
Control Flow#
funciton | benchmark |
---|---|
parallel | 2.93 |
series | 1.96 |
waterfall | 1.29 |
whilst | 1.00 |
doWhilst | 1.12 |
until | 1.12 |
doUntil | 1.12 |
during | 1.18 |
doDuring | 2.42 |
times | 4.25 |
auto | 1.97 |