JS Quiz: Hard: Microtasks vs timers output order

What is the exact console output order?

console.log('1');
setTimeout(() => console.log('2'), 0);
Promise.resolve().then(() => console.log('3'));
queueMicrotask(() => console.log('4'));
console.log('5');
  • 1, 5, 3, 4, 2
  • 1, 3, 4, 5, 2
  • 1, 5, 4, 3, 2
  • 1, 2, 5, 3, 4
0 voters

Yoshiii

Runs 1 and 5 synchronously first, then drains microtasks (3 then 4), then the timer fires (2). So the output is 1, 5, 3, 4, 2.

The bit people mix up is Promise.then and queueMicrotask share the same microtask queue and go FIFO here, so 3 stays ahead of 4.