Порядок будет code, затем promise, затем timeout. Сначала выполняется синхронный код, затем микрозадача Promise, затем задача таймера — это работа event loop.
Какой будет порядок вывода в коде: setTimeout(() => alert("timeout")); Promise.resolve().then(() => alert("promise")); alert("code");? Как называется этот механизм?
Порядок будет code, затем promise, затем timeout. Сначала выполняется синхронный код, затем микрозадача Promise, затем задача таймера — это работа event loop.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Порядок будет code, затем promise, затем timeout. Сначала выполняется синхронный код, затем микрозадача Promise, затем задача таймера — это работа event loop.
Вызов setTimeout лишь планирует callback, даже при нулевой задержке. Promise.resolve().then добавляет реакцию в очередь микрозадач; она выполняется после завершения текущего синхронного кода до следующей задачи таймера.
Alert в браузере блокирует взаимодействие до закрытия диалога, поэтому последующие сообщения появятся после подтверждения предыдущего. На порядок данного примера это не меняет основного вывода. Нулевая задержка таймера не является обещанием немедленного запуска.