diff options
author | Jorge Bay Gondra <jorgebaygondra@gmail.com> | 2016-02-25 20:39:06 +0100 |
---|---|---|
committer | Jorge Bay Gondra <jorgebaygondra@gmail.com> | 2016-02-26 12:09:33 +0100 |
commit | 91a7e520e5cd514db53810ce9c1f9563a6566808 (patch) | |
tree | 942fb1ede03bad89e5f181e5851f748bb3f37fd5 /lib | |
parent | a8c285ba7fbc7084c25c3af9b9eeff1e9b63bd62 (diff) | |
download | async-91a7e520e5cd514db53810ce9c1f9563a6566808.tar.gz |
Add race method
Diffstat (limited to 'lib')
-rw-r--r-- | lib/index.js | 3 | ||||
-rw-r--r-- | lib/race.js | 14 |
2 files changed, 17 insertions, 0 deletions
diff --git a/lib/index.js b/lib/index.js index a165909..2e27f25 100644 --- a/lib/index.js +++ b/lib/index.js @@ -42,6 +42,7 @@ import parallel from './parallel'; import parallelLimit from './parallelLimit'; import priorityQueue from './priorityQueue'; import queue from './queue'; +import race from './race'; import reduce from './reduce'; import reduceRight from './reduceRight'; import reject from './reject'; @@ -106,6 +107,7 @@ export default { parallelLimit: parallelLimit, priorityQueue: priorityQueue, queue: queue, + race: race, reduce: reduce, reduceRight: reduceRight, reject: reject, @@ -188,6 +190,7 @@ export { parallelLimit as parallelLimit, priorityQueue as priorityQueue, queue as queue, + race as race, reduce as reduce, reduceRight as reduceRight, reject as reject, diff --git a/lib/race.js b/lib/race.js new file mode 100644 index 0000000..4a5f8a5 --- /dev/null +++ b/lib/race.js @@ -0,0 +1,14 @@ +'use strict'; + +import isArray from 'lodash/isArray'; +import noop from 'lodash/noop'; +import once from 'lodash/once'; + +export default function race(tasks, cb) { + cb = once(cb || noop); + if (!isArray(tasks)) return cb(new TypeError('First argument to race must be an array of functions')); + if (!tasks.length) return cb(); + for (let i = 0; i < tasks.length; i++) { + tasks[i](cb); + } +} |