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