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

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