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

README.md

Neo-Async

npm Travis Status Coverage Status download Total Alerts

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