Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F86997496
README.md
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Wed, Oct 9, 21:37
Size
12 KB
Mime Type
text/html
Expires
Fri, Oct 11, 21:37 (1 d, 23 h)
Engine
blob
Format
Raw Data
Handle
21520017
Attached To
rOACCT Open Access Compliance Check Tool (OACCT)
README.md
View 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)
Event Timeline
Log In to Comment