我可以编写自己的代码来模拟async.waterfall
而不使用它吗?我正在尝试使用then
,但无法实现。
答案 0 :(得分:1)
您可以使用reduce
做瀑布:
function waterfall(funcs) {
return funcs.reduce((acc, func) => acc.then(func), Promise.resolve());
}
答案 1 :(得分:0)
如果您将更新版本的Node.js与async / await一起使用,则可以执行以下操作:
async function waterfall(fns){
let previous = 0;
for (let i=0; i < fns.length; i++) {
console.log(previous, 'start');
previous = await fns[i](previous);
console.log(previous, 'end');
}
console.log('The last result is', previous);
}
const fnsForWaterfall = [input => Promise.resolve(input + 3), input => Promise.resolve(input + 1)]
waterfall(fnsForWaterfall);