No Description

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

README.md

Neo-Async

npm Travis Codecov Dependency Status npm

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

$ git clone git@github.com:suguru03/async-benchmark.git
$ cd async-benchmark
$ npm install
$ node . // It might take more than one hour...

Environment

  • Ubuntu v12.04
  • Node.js v6.2.1
  • async v2.0.0-rc.6
  • neo-async v2.0.0-rc.1
  • benchmark v2.1.0
  • func-comparator v0.7.1

Result

Neo-Async is 1.27 ~ 10.7 times faster than Async.

The value is the ratio (Neo-Async/Async) of the average speed.

Collections

function benchmark func-comparator
each 3.71 2.54
eachSeries 2.14 1.90
eachLimit 2.14 1.88
eachOf 3.30 2.50
eachOfSeries 1.97 1.83
eachOfLimit 2.02 1.80
map 4.20 4.11
mapSeries 2.40 3.65
mapLimit 2.64 2.66
mapValues 5.71 5.32
mapValuesSeries 3.82 3.23
mapValuesLimit 3.10 2.38
filter 8.11 8.76
filterSeries 5.79 4.86
filterLimit 4.00 3.32
reject 9.47 9.52
rejectSeries 7.39 4.64
rejectLimit 4.54 3.49
detect 6.67 6.37
detectSeries 3.54 3.73
detectLimit 2.38 2.62
reduce 4.13 3.23
reduceRight 4.23 3.24
transform 5.30 5.17
sortBy 2.24 2.37
some 6.39 6.10
someSeries 5.37 4.66
someLimit 3.39 2.84
every 6.85 6.27
everySeries 4.53 3.90
everyLimit 3.36 2.75
concat 9.18 9.35
concatSeries 7.49 6.09

Control Flow

funciton benchmark func-comparator
parallel 7.54 5.45
series 3.29 2.41
waterfall 5.12 4.27
whilst 1.96 1.95
doWhilst 2.07 1.96
until 2.10 1.99
doUntil 1.98 2.04
during 10.7 7.09
doDuring 5.98 6.03
queue 1.83 1.75
priorityQueue 1.79 1.75
times 3.84 3.65
race 1.45 1.27
auto 3.23 3.50
retry 9.43 6.78