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

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