e 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
..
LICENSE 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
README.md 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
all.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
allLimit.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
allSeries.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
angelFall.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
any.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
anyLimit.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
anySeries.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
apply.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
applyEach.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
applyEachSeries.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
async.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
async.min.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
asyncify.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
auto.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
autoInject.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
cargo.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
compose.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
concat.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
concatLimit.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
concatSeries.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
constant.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
createLogger.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
detect.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
detectLimit.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
detectSeries.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
dir.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
doDuring.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
doUntil.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
doWhilst.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
during.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
each.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
eachLimit.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
eachOf.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
eachOfLimit.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
eachOfSeries.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
eachSeries.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
ensureAsync.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
every.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
everyLimit.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
everySeries.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
fast.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
filter.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
filterLimit.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
filterSeries.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
find.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
findLimit.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
findSeries.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
foldl.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
foldr.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
forEach.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
forEachLimit.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
forEachOf.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
forEachOfLimit.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
forEachOfSeries.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
forEachSeries.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
forever.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
groupBy.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
groupByLimit.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
groupBySeries.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
inject.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
iterator.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
log.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
map.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
mapLimit.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
mapSeries.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
mapValues.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
mapValuesLimit.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
mapValuesSeries.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
memoize.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
nextTick.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
omit.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
omitLimit.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
omitSeries.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
package.json 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
parallel.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
parallelLimit.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
pick.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
pickLimit.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
pickSeries.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
priorityQueue.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
queue.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
race.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
reduce.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
reduceRight.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
reflect.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
reflectAll.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
reject.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
rejectLimit.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
rejectSeries.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
retry.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
retryable.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
safe.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
select.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
selectLimit.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
selectSeries.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
seq.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
series.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
setImmediate.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
some.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
someLimit.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
someSeries.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
sortBy.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
sortByLimit.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
sortBySeries.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
timeout.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
times.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
timesLimit.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
timesSeries.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
transform.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
transformLimit.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
transformSeries.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
tryEach.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
unmemoize.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
until.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
waterfall.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
whilst.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos
wrapSync.js 2935effa2e webpack %!s(int64=2) %!d(string=hai) anos

README.md

Neo-Async

npm Travis Status Coverage Status download Total Alerts FOSSA

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

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

JSDoc

* not in Async

Collections

Control Flow

Utils

Mode

Benchmark

Benchmark: Async vs Neo-Async

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

License

FOSSA Status