> В какой очередности выполняются console.log, setTimeout и Promise в JavaScript (JavaScript)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: Точка, EvApps, Сбер

Стек: JavaScript

> Пример ответа

В JavaScript существует чёткий порядок выполнения асинхронных операций, основанный на цикле событий (Event Loop). Очередность следующая:

  1. Синхронный код - выполняется первым. console.log является синхронной операцией, поэтому он выполняется немедленно в текущем стеке вызовов.

  2. Микрозадачи (Microtasks) - выполняются после завершения синхронного кода и перед макрозадачами. Сюда входят Promise.then(), catch(), finally(), а также queueMicrotask(). Если Promise уже разрешён, его колбэк попадает в очередь микрозадач.

  3. Макрозадачи (Macrotasks) - выполняются после микрозадач. Сюда входят setTimeout, setInterval, setImmediate (в Node.js), а также события DOM (клики, загрузка и т.д.).

Пример для наглядности:

JAVASCRIPT
console.log('1'); // Синхронный код
setTimeout(() => {
console.log('2'); // Макрозадача
}, 0);
Promise.resolve().then(() => {
console.log('3'); // Микрозадача
});
console.log('4'); // Синхронный код

Результат: 1, 4, 3, 2.

Таким образом, порядок: синхронный код → микрозадачи (Promise) → макрозадачи (setTimeout).

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью