Sobes.tech
Middle+

/* What will be printed in the console */ console.log(1); Promise.resolve().then(() => console.log(2)); setTimeout(() => console.log(3)); Promise.resolve().then(() => console.log(4)); console.log(5); setTimeout(() => { Promise.resolve().then(() => console.log(6)); console.log(7); Promise.resolve().then(() => console.log(8)); }, 0); setTimeout(() => console.log(9));

sobes.tech AI

Answer from AI

The console output will be as follows:

1
5
2
4
3
7
9
6
8

Explanation of the output order:

  1. console.log(1); — synchronous call, outputs 1.
  2. Promise.resolve().then(() => console.log(2)); and Promise.resolve().then(() => console.log(4)); — these are microtasks, executed after the current call stack.
  3. console.log(5); — synchronous, outputs 5.

After the synchronous code, microtasks are executed:

  • output 2
  • output 4

Then, macrotasks (timeouts) are executed:

  • first setTimeout(() => console.log(3)); — outputs 3
  • second setTimeout(() => { ... }); — inside:
    • console.log(7); is synchronous inside the timeout
    • Promise.resolve().then(() => console.log(6)); and Promise.resolve().then(() => console.log(8)); — microtasks, executed after the current macrotask
  • third setTimeout(() => console.log(9)); — outputs 9

Order of macrotasks and microtasks inside them:

  • First timeout executes: outputs 3
  • Second timeout executes:
    • outputs 7
    • schedules microtasks 6 and 8
  • Third timeout executes: outputs 9

After all macrotasks, microtasks scheduled inside them are executed:

  • outputs 6
  • outputs 8

Final order: 1, 5, 2, 4, 3, 7, 9, 6, 8."}]}]}