uni-ticket-system/node_modules/licia/parallel.js
2023-12-05 10:11:10 +08:00

27 lines
647 B
JavaScript

var noop = require('./noop');
var each = require('./each');
var nextTick = require('./nextTick');
exports = function(tasks, cb) {
cb = cb || noop;
var results = [];
var pending = tasks.length;
if (!pending) return done(null);
each(tasks, function(task, i) {
task(function(err, result) {
taskCb(i, err, result);
});
});
function taskCb(i, err, result) {
results[i] = result;
if (--pending === 0 || err) done(err);
}
function done(err) {
nextTick(function() {
cb(err, results);
cb = noop;
});
}
};
module.exports = exports;