diff options
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); + } +} |