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