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

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