有什么替代async.waterfall的方法吗?

时间:2018-06-28 07:43:05

标签: node.js async-await

我可以编写自己的代码来模拟async.waterfall而不使用它吗?我正在尝试使用then,但无法实现。

2 个答案:

答案 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);