Name | Last modified | Size | Description | |
---|---|---|---|---|
Parent Directory | - | |||
package.json | 2023-06-08 14:14 | 2.2K | ||
wrapSync.js | 1985-10-26 08:15 | 61 | ||
whilst.js | 1985-10-26 08:15 | 59 | ||
waterfall.js | 1985-10-26 08:15 | 62 | 0fb859dc fixed mobile overflwo options [كارل مبارك] | |
until.js | 1985-10-26 08:15 | 58 | ||
unmemoize.js | 1985-10-26 08:15 | 62 | ||
tryEach.js | 1985-10-26 08:15 | 60 | ||
transformSeries.js | 1985-10-26 08:15 | 68 | 0fb859dc fixed mobile overflwo options [كارل مبارك] | |
transformLimit.js | 1985-10-26 08:15 | 67 | 0fb859dc fixed mobile overflwo options [كارل مبارك] | |
transform.js | 1985-10-26 08:15 | 62 | 0fb859dc fixed mobile overflwo options [كارل مبارك] | |
timesSeries.js | 1985-10-26 08:15 | 64 | ||
timesLimit.js | 1985-10-26 08:15 | 63 | ||
times.js | 1985-10-26 08:15 | 58 | ||
timeout.js | 1985-10-26 08:15 | 60 | ||
sortBySeries.js | 1985-10-26 08:15 | 65 | ||
sortByLimit.js | 1985-10-26 08:15 | 64 | ||
sortBy.js | 1985-10-26 08:15 | 59 | ||
someSeries.js | 1985-10-26 08:15 | 63 | ||
someLimit.js | 1985-10-26 08:15 | 62 | ||
some.js | 1985-10-26 08:15 | 57 | ||
setImmediate.js | 1985-10-26 08:15 | 65 | 0fb859dc fixed mobile overflwo options [كارل مبارك] | |
series.js | 1985-10-26 08:15 | 59 | ||
seq.js | 1985-10-26 08:15 | 56 | ||
selectSeries.js | 1985-10-26 08:15 | 65 | ||
selectLimit.js | 1985-10-26 08:15 | 64 | ||
select.js | 1985-10-26 08:15 | 59 | ||
safe.js | 1985-10-26 08:15 | 57 | ||
retryable.js | 1985-10-26 08:15 | 62 | ||
retry.js | 1985-10-26 08:15 | 58 | ||
rejectSeries.js | 1985-10-26 08:15 | 65 | ||
rejectLimit.js | 1985-10-26 08:15 | 64 | ||
reject.js | 1985-10-26 08:15 | 59 | ||
reflectAll.js | 1985-10-26 08:15 | 63 | ||
reflect.js | 1985-10-26 08:15 | 60 | ||
reduceRight.js | 1985-10-26 08:15 | 64 | ||
reduce.js | 1985-10-26 08:15 | 59 | ||
race.js | 1985-10-26 08:15 | 57 | ||
queue.js | 1985-10-26 08:15 | 58 | ||
priorityQueue.js | 1985-10-26 08:15 | 66 | ||
pickSeries.js | 1985-10-26 08:15 | 63 | ||
pickLimit.js | 1985-10-26 08:15 | 62 | ||
pick.js | 1985-10-26 08:15 | 57 | ||
parallelLimit.js | 1985-10-26 08:15 | 66 | ||
parallel.js | 1985-10-26 08:15 | 61 | ||
omitSeries.js | 1985-10-26 08:15 | 63 | ||
omitLimit.js | 1985-10-26 08:15 | 62 | ||
omit.js | 1985-10-26 08:15 | 57 | ||
nextTick.js | 1985-10-26 08:15 | 61 | ||
memoize.js | 1985-10-26 08:15 | 60 | ||
mapValuesSeries.js | 1985-10-26 08:15 | 68 | ||
mapValuesLimit.js | 1985-10-26 08:15 | 67 | ||
mapValues.js | 1985-10-26 08:15 | 62 | ||
mapSeries.js | 1985-10-26 08:15 | 62 | ||
mapLimit.js | 1985-10-26 08:15 | 61 | ||
map.js | 1985-10-26 08:15 | 56 | ||
log.js | 1985-10-26 08:15 | 56 | ||
iterator.js | 1985-10-26 08:15 | 61 | 0fb859dc fixed mobile overflwo options [كارل مبارك] | |
inject.js | 1985-10-26 08:15 | 59 | ||
groupBySeries.js | 1985-10-26 08:15 | 66 | ||
groupByLimit.js | 1985-10-26 08:15 | 65 | ||
groupBy.js | 1985-10-26 08:15 | 60 | ||
forever.js | 1985-10-26 08:15 | 60 | 0fb859dc fixed mobile overflwo options [كارل مبارك] | |
forEachSeries.js | 1985-10-26 08:15 | 66 | 0fb859dc fixed mobile overflwo options [كارل مبارك] | |
forEachOfSeries.js | 1985-10-26 08:15 | 68 | 0fb859dc fixed mobile overflwo options [كارل مبارك] | |
forEachOfLimit.js | 1985-10-26 08:15 | 67 | 0fb859dc fixed mobile overflwo options [كارل مبارك] | |
forEachOf.js | 1985-10-26 08:15 | 62 | 0fb859dc fixed mobile overflwo options [كارل مبارك] | |
forEachLimit.js | 1985-10-26 08:15 | 65 | 0fb859dc fixed mobile overflwo options [كارل مبارك] | |
forEach.js | 1985-10-26 08:15 | 60 | 0fb859dc fixed mobile overflwo options [كارل مبارك] | |
foldr.js | 1985-10-26 08:15 | 58 | ||
foldl.js | 1985-10-26 08:15 | 58 | ||
findSeries.js | 1985-10-26 08:15 | 63 | ||
findLimit.js | 1985-10-26 08:15 | 62 | ||
find.js | 1985-10-26 08:15 | 57 | ||
filterSeries.js | 1985-10-26 08:15 | 65 | ||
filterLimit.js | 1985-10-26 08:15 | 64 | ||
filter.js | 1985-10-26 08:15 | 59 | ||
fast.js | 1985-10-26 08:15 | 57 | ||
everySeries.js | 1985-10-26 08:15 | 64 | ||
everyLimit.js | 1985-10-26 08:15 | 63 | ||
every.js | 1985-10-26 08:15 | 58 | ||
ensureAsync.js | 1985-10-26 08:15 | 64 | ||
eachSeries.js | 1985-10-26 08:15 | 63 | ||
eachOfSeries.js | 1985-10-26 08:15 | 65 | ||
eachOfLimit.js | 1985-10-26 08:15 | 64 | ||
eachOf.js | 1985-10-26 08:15 | 59 | ||
eachLimit.js | 1985-10-26 08:15 | 62 | ||
each.js | 1985-10-26 08:15 | 57 | ||
during.js | 1985-10-26 08:15 | 59 | ||
doWhilst.js | 1985-10-26 08:15 | 61 | ||
doUntil.js | 1985-10-26 08:15 | 60 | ||
doDuring.js | 1985-10-26 08:15 | 61 | ||
dir.js | 1985-10-26 08:15 | 56 | ||
detectSeries.js | 1985-10-26 08:15 | 65 | ||
detectLimit.js | 1985-10-26 08:15 | 64 | ||
detect.js | 1985-10-26 08:15 | 59 | ||
createLogger.js | 1985-10-26 08:15 | 65 | 0fb859dc fixed mobile overflwo options [كارل مبارك] | |
constant.js | 1985-10-26 08:15 | 61 | ||
concatSeries.js | 1985-10-26 08:15 | 65 | 0fb859dc fixed mobile overflwo options [كارل مبارك] | |
concatLimit.js | 1985-10-26 08:15 | 64 | 0fb859dc fixed mobile overflwo options [كارل مبارك] | |
concat.js | 1985-10-26 08:15 | 59 | 0fb859dc fixed mobile overflwo options [كارل مبارك] | |
compose.js | 1985-10-26 08:15 | 60 | ||
cargo.js | 1985-10-26 08:15 | 58 | ||
autoInject.js | 1985-10-26 08:15 | 63 | ||
auto.js | 1985-10-26 08:15 | 57 | ||
asyncify.js | 1985-10-26 08:15 | 61 | ||
async.min.js | 1985-10-26 08:15 | 39K | ||
async.js | 1985-10-26 08:15 | 230K | ||
applyEachSeries.js | 1985-10-26 08:15 | 68 | ||
applyEach.js | 1985-10-26 08:15 | 62 | ||
apply.js | 1985-10-26 08:15 | 58 | ||
anySeries.js | 1985-10-26 08:15 | 62 | ||
anyLimit.js | 1985-10-26 08:15 | 61 | ||
any.js | 1985-10-26 08:15 | 56 | ||
angelFall.js | 1985-10-26 08:15 | 62 | ||
allSeries.js | 1985-10-26 08:15 | 62 | ||
allLimit.js | 1985-10-26 08:15 | 61 | ||
all.js | 1985-10-26 08:15 | 56 | ||
README.md | 1985-10-26 08:15 | 12K | 0fb859dc fixed mobile overflwo options [كارل مبارك] | |
LICENSE | 1985-10-26 08:15 | 1.1K | 0fb859dc fixed mobile overflwo options [كارل مبارك] |
<h1 align="center">Neo-Async</h1> <p align="center"> <img src="https://raw.githubusercontent.com/wiki/suguru03/neo-async/images/neo_async_v2.png" width="250px" /> </p> <p align="center"> <a href="https://www.npmjs.com/package/neo-async"><img alt="npm" src="https://img.shields.io/npm/v/neo-async.svg"></a> <a href="https://travis-ci.org/suguru03/neo-async"><img alt="Travis Status" src="https://img.shields.io/travis/suguru03/neo-async.svg"></a> <a href="https://codecov.io/gh/suguru03/neo-async"><img alt="Coverage Status" src="https://img.shields.io/codecov/c/github/suguru03/neo-async/master.svg"></a> <a href="https://www.npmjs.com/package/neo-async"><img alt="download" src="https://img.shields.io/npm/dm/neo-async.svg"></a> <a href="https://lgtm.com/projects/g/suguru03/neo-async/context:javascript"><img src="https://img.shields.io/lgtm/grade/javascript/g/suguru03/neo-async.svg?logo=lgtm&logoWidth=18" alt="Code Quality: Javascript" height="18"></a> <a href="https://lgtm.com/projects/g/suguru03/neo-async/alerts"><img src="https://img.shields.io/lgtm/alerts/g/suguru03/neo-async.svg?logo=lgtm&logoWidth=18" alt="Total Alerts" height="18"></a> <a href="https://app.fossa.io/projects/git%2Bgithub.com%2Fsuguru03%2Fneo-async?ref=badge_shield"><img src="https://app.fossa.io/api/projects/git%2Bgithub.com%2Fsuguru03%2Fneo-async.svg?type=shield" alt="FOSSA" height="18"></a> </p> Neo-Async is thought to be used as a drop-in replacement for [Async](https://github.com/caolan/async), it almost fully covers its functionality and runs [faster](#benchmark). Benchmark is [here](#benchmark)! Bluebird's benchmark is [here](https://github.com/suguru03/bluebird/tree/aigle/benchmark)! ## Code Coverage ![coverage](https://raw.githubusercontent.com/wiki/suguru03/neo-async/images/coverage.png) ## Installation ### In a browser ```html <script src="async.min.js"></script> ``` ### In an AMD loader ```js require(['async'], function(async) {}); ``` ### Promise and async/await I recommend to use [`Aigle`](https://github.com/suguru03/aigle). It is optimized for Promise handling and has almost the same functionality as `neo-async`. ### Node.js #### standard ```bash $ npm install neo-async ``` ```js var async = require('neo-async'); ``` #### replacement ```bash $ npm install neo-async $ ln -s ./node_modules/neo-async ./node_modules/async ``` ```js var async = require('async'); ``` ### Bower ```bash bower install neo-async ``` ## Feature [JSDoc](http://suguru03.github.io/neo-async/doc/async.html) \* not in Async ### Collections - [`each`](http://suguru03.github.io/neo-async/doc/async.each.html) - [`eachSeries`](http://suguru03.github.io/neo-async/doc/async.eachSeries.html) - [`eachLimit`](http://suguru03.github.io/neo-async/doc/async.eachLimit.html) - [`forEach`](http://suguru03.github.io/neo-async/doc/async.each.html) -> [`each`](http://suguru03.github.io/neo-async/doc/async.each.html) - [`forEachSeries`](http://suguru03.github.io/neo-async/doc/async.eachSeries.html) -> [`eachSeries`](http://suguru03.github.io/neo-async/doc/async.eachSeries.html) - [`forEachLimit`](http://suguru03.github.io/neo-async/doc/async.eachLimit.html) -> [`eachLimit`](http://suguru03.github.io/neo-async/doc/async.eachLimit.html) - [`eachOf`](http://suguru03.github.io/neo-async/doc/async.each.html) -> [`each`](http://suguru03.github.io/neo-async/doc/async.each.html) - [`eachOfSeries`](http://suguru03.github.io/neo-async/doc/async.eachSeries.html) -> [`eachSeries`](http://suguru03.github.io/neo-async/doc/async.eachSeries.html) - [`eachOfLimit`](http://suguru03.github.io/neo-async/doc/async.eachLimit.html) -> [`eachLimit`](http://suguru03.github.io/neo-async/doc/async.eachLimit.html) - [`forEachOf`](http://suguru03.github.io/neo-async/doc/async.each.html) -> [`each`](http://suguru03.github.io/neo-async/doc/async.each.html) - [`forEachOfSeries`](http://suguru03.github.io/neo-async/doc/async.eachSeries.html) -> [`eachSeries`](http://suguru03.github.io/neo-async/doc/async.eachSeries.html) - [`eachOfLimit`](http://suguru03.github.io/neo-async/doc/async.eachLimit.html) -> [`forEachLimit`](http://suguru03.github.io/neo-async/doc/async.eachLimit.html) - [`map`](http://suguru03.github.io/neo-async/doc/async.map.html) - [`mapSeries`](http://suguru03.github.io/neo-async/doc/async.mapSeries.html) - [`mapLimit`](http://suguru03.github.io/neo-async/doc/async.mapLimit.html) - [`mapValues`](http://suguru03.github.io/neo-async/doc/async.mapValues.html) - [`mapValuesSeries`](http://suguru03.github.io/neo-async/doc/async.mapValuesSeries.html) - [`mapValuesLimit`](http://suguru03.github.io/neo-async/doc/async.mapValuesLimit.html) - [`filter`](http://suguru03.github.io/neo-async/doc/async.filter.html) - [`filterSeries`](http://suguru03.github.io/neo-async/doc/async.filterSeries.html) - [`filterLimit`](http://suguru03.github.io/neo-async/doc/async.filterLimit.html) - [`select`](http://suguru03.github.io/neo-async/doc/async.filter.html) -> [`filter`](http://suguru03.github.io/neo-async/doc/async.filter.html) - [`selectSeries`](http://suguru03.github.io/neo-async/doc/async.filterSeries.html) -> [`filterSeries`](http://suguru03.github.io/neo-async/doc/async.filterSeries.html) - [`selectLimit`](http://suguru03.github.io/neo-async/doc/async.filterLimit.html) -> [`filterLimit`](http://suguru03.github.io/neo-async/doc/async.filterLimit.html) - [`reject`](http://suguru03.github.io/neo-async/doc/async.reject.html) - [`rejectSeries`](http://suguru03.github.io/neo-async/doc/async.rejectSeries.html) - [`rejectLimit`](http://suguru03.github.io/neo-async/doc/async.rejectLimit.html) - [`detect`](http://suguru03.github.io/neo-async/doc/async.detect.html) - [`detectSeries`](http://suguru03.github.io/neo-async/doc/async.detectSeries.html) - [`detectLimit`](http://suguru03.github.io/neo-async/doc/async.detectLimit.html) - [`find`](http://suguru03.github.io/neo-async/doc/async.detect.html) -> [`detect`](http://suguru03.github.io/neo-async/doc/async.detect.html) - [`findSeries`](http://suguru03.github.io/neo-async/doc/async.detectSeries.html) -> [`detectSeries`](http://suguru03.github.io/neo-async/doc/async.detectSeries.html) - [`findLimit`](http://suguru03.github.io/neo-async/doc/async.detectLimit.html) -> [`detectLimit`](http://suguru03.github.io/neo-async/doc/async.detectLimit.html) - [`pick`](http://suguru03.github.io/neo-async/doc/async.pick.html) * - [`pickSeries`](http://suguru03.github.io/neo-async/doc/async.pickSeries.html) * - [`pickLimit`](http://suguru03.github.io/neo-async/doc/async.pickLimit.html) * - [`omit`](http://suguru03.github.io/neo-async/doc/async.omit.html) * - [`omitSeries`](http://suguru03.github.io/neo-async/doc/async.omitSeries.html) * - [`omitLimit`](http://suguru03.github.io/neo-async/doc/async.omitLimit.html) * - [`reduce`](http://suguru03.github.io/neo-async/doc/async.reduce.html) - [`inject`](http://suguru03.github.io/neo-async/doc/async.reduce.html) -> [`reduce`](http://suguru03.github.io/neo-async/doc/async.reduce.html) - [`foldl`](http://suguru03.github.io/neo-async/doc/async.reduce.html) -> [`reduce`](http://suguru03.github.io/neo-async/doc/async.reduce.html) - [`reduceRight`](http://suguru03.github.io/neo-async/doc/async.reduceRight.html) - [`foldr`](http://suguru03.github.io/neo-async/doc/async.reduceRight.html) -> [`reduceRight`](http://suguru03.github.io/neo-async/doc/async.reduceRight.html) - [`transform`](http://suguru03.github.io/neo-async/doc/async.transform.html) - [`transformSeries`](http://suguru03.github.io/neo-async/doc/async.transformSeries.html) * - [`transformLimit`](http://suguru03.github.io/neo-async/doc/async.transformLimit.html) * - [`sortBy`](http://suguru03.github.io/neo-async/doc/async.sortBy.html) - [`sortBySeries`](http://suguru03.github.io/neo-async/doc/async.sortBySeries.html) * - [`sortByLimit`](http://suguru03.github.io/neo-async/doc/async.sortByLimit.html) * - [`some`](http://suguru03.github.io/neo-async/doc/async.some.html) - [`someSeries`](http://suguru03.github.io/neo-async/doc/async.someSeries.html) - [`someLimit`](http://suguru03.github.io/neo-async/doc/async.someLimit.html) - [`any`](http://suguru03.github.io/neo-async/doc/async.some.html) -> [`some`](http://suguru03.github.io/neo-async/doc/async.some.html) - [`anySeries`](http://suguru03.github.io/neo-async/doc/async.someSeries.html) -> [`someSeries`](http://suguru03.github.io/neo-async/doc/async.someSeries.html) - [`anyLimit`](http://suguru03.github.io/neo-async/doc/async.someLimit.html) -> [`someLimit`](http://suguru03.github.io/neo-async/doc/async.someLimit.html) - [`every`](http://suguru03.github.io/neo-async/doc/async.every.html) - [`everySeries`](http://suguru03.github.io/neo-async/doc/async.everySeries.html) - [`everyLimit`](http://suguru03.github.io/neo-async/doc/async.everyLimit.html) - [`all`](http://suguru03.github.io/neo-async/doc/async.every.html) -> [`every`](http://suguru03.github.io/neo-async/doc/async.every.html) - [`allSeries`](http://suguru03.github.io/neo-async/doc/async.everySeries.html) -> [`every`](http://suguru03.github.io/neo-async/doc/async.everySeries.html) - [`allLimit`](http://suguru03.github.io/neo-async/doc/async.everyLimit.html) -> [`every`](http://suguru03.github.io/neo-async/doc/async.everyLimit.html) - [`concat`](http://suguru03.github.io/neo-async/doc/async.concat.html) - [`concatSeries`](http://suguru03.github.io/neo-async/doc/async.concatSeries.html) - [`concatLimit`](http://suguru03.github.io/neo-async/doc/async.concatLimit.html) * ### Control Flow - [`parallel`](http://suguru03.github.io/neo-async/doc/async.parallel.html) - [`series`](http://suguru03.github.io/neo-async/doc/async.series.html) - [`parallelLimit`](http://suguru03.github.io/neo-async/doc/async.series.html) - [`tryEach`](http://suguru03.github.io/neo-async/doc/async.tryEach.html) - [`waterfall`](http://suguru03.github.io/neo-async/doc/async.waterfall.html) - [`angelFall`](http://suguru03.github.io/neo-async/doc/async.angelFall.html) * - [`angelfall`](http://suguru03.github.io/neo-async/doc/async.angelFall.html) -> [`angelFall`](http://suguru03.github.io/neo-async/doc/async.angelFall.html) * - [`whilst`](#whilst) - [`doWhilst`](#doWhilst) - [`until`](#until) - [`doUntil`](#doUntil) - [`during`](#during) - [`doDuring`](#doDuring) - [`forever`](#forever) - [`compose`](#compose) - [`seq`](#seq) - [`applyEach`](#applyEach) - [`applyEachSeries`](#applyEachSeries) - [`queue`](#queue) - [`priorityQueue`](#priorityQueue) - [`cargo`](#cargo) - [`auto`](#auto) - [`autoInject`](#autoInject) - [`retry`](#retry) - [`retryable`](#retryable) - [`iterator`](#iterator) - [`times`](http://suguru03.github.io/neo-async/doc/async.times.html) - [`timesSeries`](http://suguru03.github.io/neo-async/doc/async.timesSeries.html) - [`timesLimit`](http://suguru03.github.io/neo-async/doc/async.timesLimit.html) - [`race`](#race) ### Utils - [`apply`](#apply) - [`setImmediate`](#setImmediate) - [`nextTick`](#nextTick) - [`memoize`](#memoize) - [`unmemoize`](#unmemoize) - [`ensureAsync`](#ensureAsync) - [`constant`](#constant) - [`asyncify`](#asyncify) - [`wrapSync`](#asyncify) -> [`asyncify`](#asyncify) - [`log`](#log) - [`dir`](#dir) - [`timeout`](http://suguru03.github.io/neo-async/doc/async.timeout.html) - [`reflect`](#reflect) - [`reflectAll`](#reflectAll) - [`createLogger`](#createLogger) ## Mode - [`safe`](#safe) * - [`fast`](#fast) * ## Benchmark [Benchmark: Async vs Neo-Async](http://suguru03.hatenablog.com/entry/2016/06/10/135559) ### How to check ```bash $ 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](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fsuguru03%2Fneo-async.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2Fsuguru03%2Fneo-async?ref=badge_large)