Какой будет порядок вывода в коде: setTimeout(() => alert("timeout")); Promise.resolve().then(() => alert("promise")); alert("code");? Как называется этот механизм?

Порядок будет code, затем promise, затем timeout. Сначала выполняется синхронный код, затем микрозадача Promise, затем задача таймера — это работа event loop.

Короткий ответ

Что ответить на собеседовании

Порядок будет code, затем promise, затем timeout. Сначала выполняется синхронный код, затем микрозадача Promise, затем задача таймера — это работа event loop.

Подробный разбор

Ответ с пояснениями

Порядок будет code, затем promise, затем timeout. Сначала выполняется синхронный код, затем микрозадача Promise, затем задача таймера — это работа event loop.

Вызов setTimeout лишь планирует callback, даже при нулевой задержке. Promise.resolve().then добавляет реакцию в очередь микрозадач; она выполняется после завершения текущего синхронного кода до следующей задачи таймера.

Alert в браузере блокирует взаимодействие до закрытия диалога, поэтому последующие сообщения появятся после подтверждения предыдущего. На порядок данного примера это не меняет основного вывода. Нулевая задержка таймера не является обещанием немедленного запуска.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее