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