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
eacheachSerieseachLimitforEach->eachforEachSeries->eachSeriesforEachLimit->eachLimiteachOf->eacheachOfSeries->eachSerieseachOfLimit->eachLimitforEachOf->eachforEachOfSeries->eachSerieseachOfLimit->forEachLimitmapmapSeriesmapLimitmapValuesmapValuesSeriesmapValuesLimitfilterfilterSeriesfilterLimitselect->filterselectSeries->filterSeriesselectLimit->filterLimitrejectrejectSeriesrejectLimitdetectdetectSeriesdetectLimitfind->detectfindSeries->detectSeriesfindLimit->detectLimitpick*pickSeries*pickLimit*omit*omitSeries*omitLimit*reduceinject->reducefoldl->reducereduceRightfoldr->reduceRighttransformtransformSeries*transformLimit*sortBysortBySeries*sortByLimit*somesomeSeriessomeLimitany->someanySeries->someSeriesanyLimit->someLimiteveryeverySerieseveryLimitall->everyallSeries->everyallLimit->everyconcatconcatSeriesconcatLimit*
Control Flow
parallelseriesparallelLimittryEachwaterfallangelFall*angelfall->angelFall*whilstdoWhilstuntildoUntilduringdoDuringforevercomposeseqapplyEachapplyEachSeriesqueuepriorityQueuecargoautoautoInjectretryretryableiteratortimestimesSeriestimesLimitrace
Utils
applysetImmediatenextTickmemoizeunmemoizeensureAsyncconstantasyncifywrapSync->asyncifylogdirtimeoutreflectreflectAllcreateLogger
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 | 

