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

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