Есть ли альтернатива async.waterfall? - PullRequest
0 голосов
/ 28 июня 2018

Могу ли я написать свой собственный код для имитации async.waterfall без его использования? Я пытаюсь использовать then, но не могу этого достичь.

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

Вы можете использовать reduce, чтобы сделать водопад:

function waterfall(funcs) {
  return funcs.reduce((acc, func) => acc.then(func), Promise.resolve());
}
0 голосов
/ 28 июня 2018

Если вы используете более новую версию 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...