Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | 2x 10x 10x 10x 44x 44x 9x 9x 35x 35x 34x 1x 10x | /** * Execute an array of async functions in order * passing the result of each function to the next * * @async * @function reducer * @param {*} startValue - The starting value * @param {function[]} funcs - The async functions to execute * @returns {*} - The final value from the functions * * @example * * const results = await reducer(0, * asyncFunction, * asyncFunction2, * asyncFunction3 * ) */ module.exports = (startValue, ...funcs) => new Promise((resolve, reject) => { const iterator = funcs[Symbol.iterator]() const next = async total => { const el = iterator.next() if (el.done) { resolve(total) return } try { const result = await el.value(total) next(result) } catch (error) { return reject(error) } } next(startValue) }) |