Promise waterfall

·

1 min read

JavaScript promise is very useful, but if you have unpredictable tasks that depend on the previous task or can't run parallel, this syntax can be helpful.

Waterfall syntax

Start by prepare a promise function called run

const run = () => {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve(true);
    }, 1000);
  });
}

Then use reduce get the output of the previous task

Array.from({ length: 10 }).reduce(function(prev, curr) {
  return prev.then(() => {
    return run()
  })
}, Promise.resolve([]))

Conclusion

Absolutely you can use another package like async to solve this problem. But if you want to have a lightweight solution, it can help.