You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*! run-parallel. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */ module.exports = runParallel
const queueMicrotask = require('queue-microtask')
function runParallel (tasks, cb) { let results, pending, keys let isSync = true
if (Array.isArray(tasks)) { results = [] pending = tasks.length } else { keys = Object.keys(tasks) results = {} pending = keys.length }
function done (err) { function end () { if (cb) cb(err, results) cb = null } if (isSync) queueMicrotask(end) else end() }
function each (i, err, result) { results[i] = result if (--pending === 0 || err) { done(err) } }
if (!pending) { // empty
done(null) } else if (keys) { // object
keys.forEach(function (key) { tasks[key](function (err, result) { each(key, err, result) }) }) } else { // array
tasks.forEach(function (task, i) { task(function (err, result) { each(i, err, result) }) }) }
isSync = false }
|