Проанализируйте пример на JavaScript: "setTimeout(()=>console.log(1),0); Promise.resolve().then(()=>console.log(2)); console.log(3);" Объясните порядок вывода и почему

15 Янв в 13:08
6 +1
0
Ответы
1
Порядок вывода: 3,2,13, 2, 13,2,1.
Короткое объяснение по шагам:
- Синхронный код выполняется сразу: `console.log(333)` печатает 333.
- `Promise.resolve().then(...)` ставит коллбек в очередь микрозадач (microtask/job). Микрозадачи выполняются сразу после завершения текущего стека вызовов, но до следующей макрозадачи. Поэтому печатается 222.
- `setTimeout(..., 000)` ставит коллбек в очередь макрозадач (timers/task). Даже с задержкой 000 он выполнится только после того, как завершатся текущая синхронная работа и все микрозадачи — поэтому `console.log(111)` выводится последним.
Итого: сначала синхронный вывод (333), затем микрозадачи (Promise → 222), затем макрозадачи (setTimeout → 111).
15 Янв в 13:15
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир