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
Объяснение порядка вывода:
console.log(1);— синхронный вызов, выводит1.setTimeout(..., 0)— ставит колбэк в очередь макротасков, выполнится позже.Promise.resolve().then(...)— ставит колбэк в очередь микротасков, которые выполняются после текущего стека, но до макротасков.console.log(4);— синхронный вызов, выводит4.
После завершения синхронного кода:
- Выполняются микротаски:
console.log(3); - Затем макротаски из
setTimeout: сначалаconsole.log(2); - Второй
setTimeoutвызываетPromise.resolve().then(...), который ставит микротаск, выполняющийconsole.log(5);после текущего макротаска.
Таким образом, порядок: 1,4,3,2,5.