UNPKG

run-waterfall

Version:

Run an array of functions in series, each passing its results to the next function (waterfall)

34 lines (28 loc) 720 B
/*! run-waterfall. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */ module.exports = runWaterfall function runWaterfall (tasks, cb) { var current = 0 var isSync = true function done (err, args) { function end () { args = args ? [].concat(err, args) : [err] if (cb) cb.apply(undefined, args) } if (isSync) process.nextTick(end) else end() } function each (err) { var args = Array.prototype.slice.call(arguments, 1) if (++current >= tasks.length || err) { done(err, args) } else { tasks[current].apply(undefined, [].concat(args, each)) } } if (tasks.length) { tasks[0](each) } else { done(null) } isSync = false }