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