Назад к вопросам
Middle+
2
/* Что выведется в консоли */ 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
Вывод в консоль будет следующим:
1
5
2
4
3
7
9
6
8
Объяснение порядка вывода:
console.log(1);— синхронный вызов, выводит1.Promise.resolve().then(() => console.log(2));иPromise.resolve().then(() => console.log(4));— это микротаски, они выполняются после текущего стека вызовов.console.log(5);— синхронный, выводит5.
После синхронного кода выполняются микротаски:
- вывод
2 - вывод
4
Затем выполняются макротаски (таймауты):
- первый
setTimeout(() => console.log(3));— вывод3 - второй
setTimeout(() => { ... });— внутри:console.log(7);синхронный внутри таймаутаPromise.resolve().then(() => console.log(6));иPromise.resolve().then(() => console.log(8));— микротаски, выполнятся после текущего макротаска
- третий
setTimeout(() => console.log(9));— вывод9
Порядок макротасков и микротасков внутри них:
- Выполняется первый таймаут: вывод
3 - Выполняется второй таймаут:
- вывод
7 - планируются микротаски
6и8
- вывод
- Выполняется третий таймаут: вывод
9
После всех макротасков выполняются микротаски, запланированные внутри них:
- вывод
6 - вывод
8
Итоговый порядок: 1, 5, 2, 4, 3, 7, 9, 6, 8.