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
Kodo/kodo - Gogs: Go Git Service

11 Commits (50ebe3bfcd991745028cd0425c7fd77844d9e965)

Autor SHA1 Mensaje Fecha
  Brightcells 0e1b1fb160 adjust WECHAT in settings.py & use django-logit %!s(int64=9) %!d(string=hace) años
  Brightcells aa78f33cca Fix Bug: group admin request group_join_api %!s(int64=9) %!d(string=hace) años
  Brightcells 7a17d0fb90 add api wxpay & add redis relative %!s(int64=10) %!d(string=hace) años
  Brightcells 62aff0cb2f move status code into errno_utils.py to unified management %!s(int64=10) %!d(string=hace) años
  Brightcells d3798a39f1 update session_detail_api %!s(int64=10) %!d(string=hace) años
  Brightcells 7467a3e68a add api group_update/group_remove %!s(int64=10) %!d(string=hace) años
  Brightcells 6e77deb909 https://pypi.python.org/pypi/django-curtail-uuid %!s(int64=10) %!d(string=hace) años
  Brightcells 3454610bb7 add api of user signup/login %!s(int64=10) %!d(string=hace) años
  Brightcells ca8b65a77e nginx conf & requirements %!s(int64=10) %!d(string=hace) años
  Brightcells 52ce35cbfc add api uuid_init/uuid %!s(int64=10) %!d(string=hace) años
  Brightcells 4defb80fdc gogs first init %!s(int64=10) %!d(string=hace) años