> В какой очередности выполняются console.log, setTimeout и Promise в JavaScript (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Точка, EvApps, Сбер
Стек: JavaScript
> Пример ответа
В JavaScript существует чёткий порядок выполнения асинхронных операций, основанный на цикле событий (Event Loop). Очередность следующая:
-
Синхронный код - выполняется первым.
console.logявляется синхронной операцией, поэтому он выполняется немедленно в текущем стеке вызовов. -
Микрозадачи (Microtasks) - выполняются после завершения синхронного кода и перед макрозадачами. Сюда входят
Promise.then(),catch(),finally(), а такжеqueueMicrotask(). Если Promise уже разрешён, его колбэк попадает в очередь микрозадач. -
Макрозадачи (Macrotasks) - выполняются после микрозадач. Сюда входят
setTimeout,setInterval,setImmediate(в Node.js), а также события DOM (клики, загрузка и т.д.).
Пример для наглядности:
JAVASCRIPTconsole.log('1'); // Синхронный кодsetTimeout(() => {console.log('2'); // Макрозадача}, 0);Promise.resolve().then(() => {console.log('3'); // Микрозадача});console.log('4'); // Синхронный код
Результат: 1, 4, 3, 2.
Таким образом, порядок: синхронный код → микрозадачи (Promise) → макрозадачи (setTimeout).
> Похожие задачи по frontend
Что делает метод stopPropagation и как он влияет на обработку событий в DOM
Как предотвратить всплытие события клика в JavaScript
Какие примитивные типы существуют в JavaScript?
Как реализовать функцию any, которая работает как Promise.any?
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью