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