Sha256: acbc9a16809467da8f06757d4600be6466b20bf4a05e55c157fa04830fb186b7
Contents?: true
Size: 1.01 KB
Versions: 42
Compression:
Stored size: 1.01 KB
Contents
/*! 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 }
Version data entries
42 entries across 42 versions & 3 rubygems