UNPKG

async-promises

Version:

Async control flow patterns using promises based on https://github.com/caolan/async

28 lines (21 loc) 559 B
'use strict'; module.exports = function waterfall(tasks) { if (!Array.isArray(tasks)) { return Promise.reject(new Error('First argument to waterfall must be an array of functions')); } function nextItem(value) { const task = tasks.shift(); if (!task) { return Promise.resolve(value); } return Promise.resolve(value) .then((values) => { if (Array.isArray(values)) { return task.apply(null, values); } return task(values); }) .then(nextItem); } return nextItem(); };