Sobes.tech
Back to questions
Middle
4

What will be the output of the following code? ```javascript console.log(1); setTimeout(() => { console.log(2); }, 0); Promise.resolve().then(() => { console.log(3); }); console.log(4); setTimeout(() => { Promise.resolve().then(() => { console.log(5); }); }, 0); ```

Companies where asked
BCraft

Answer from AI

sobes.tech AI

Вывод будет:

1
4
3
2
5

Объяснение порядка вывода:

  1. console.log(1); — синхронный вызов, выводит 1.
  2. setTimeout(..., 0) — ставит колбэк в очередь макротасков, выполнится позже.
  3. Promise.resolve().then(...) — ставит колбэк в очередь микротасков, которые выполняются после текущего стека, но до макротасков.
  4. console.log(4); — синхронный вызов, выводит 4.

После завершения синхронного кода:

  • Выполняются микротаски: console.log(3);
  • Затем макротаски из setTimeout: сначала console.log(2);
  • Второй setTimeout вызывает Promise.resolve().then(...), который ставит микротаск, выполняющий console.log(5); после текущего макротаска.

Таким образом, порядок: 1,4,3,2,5.