Sin Descripción

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

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