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