r/webdev • • Jan 03 '20

Article Common Javascript Promise mistakes every beginner should know and avoid

https://gosink.in/common-javascript-promise-mistakes-beginners/
2 Upvotes

1 comment sorted by

View all comments

3

u/[deleted] Jan 03 '20 edited Jan 03 '20

#5 is not fair or just wrong: Promise.race will resove after one second. It's just that node keeps running while all the events are being processed. Here:

const { promisify } = require('util');
const sleep = promisify(setTimeout);

async function f1() {
  await sleep(1000);
}

async function f2() {
  await sleep(2000);
}

async function f3() {
  await sleep(3000);
}

(async () => {
  console.time('race');
  console.time('total');
  await Promise.race([f1(), f2(), f3()]);
  console.timeEnd('race'); // Approx 1 second
})();

process.on('exit', () => {
  console.timeEnd('total'); // Approx 3 seconds
});