Вопрос на собеседовании · Frontend-разработчик

Как работает event loop? Что выполнится раньше: setTimeout или Promise.then?

Короткий ответ, ключевые тезисы и ошибки, которых стоит избежать на интервью.

Обновлено 10 августа 2026 г.Встречается почти всегда
Короткий ответ

Event loop координирует выполнение синхронного JavaScript и отложенных задач. Сначала движок выполняет текущий стек вызовов. Когда стек пуст, он полностью очищает очередь микрозадач, а затем берёт следующую макрозадачу.

Обработчик Promise.then попадает в очередь микрозадач, а callback setTimeout — в очередь макрозадач. Поэтому после синхронного кода обычно выполнится Promise.then, даже если таймер установлен на ноль миллисекунд.

01 · Структура ответа

Что важно сказать интервьюеру

Начните с определения, затем объясните механизм и закончите примером из практики. Для полного ответа раскройте эти тезисы:

Синхронный код всегда выполняется первым.
Promise.then, queueMicrotask и продолжение await относятся к микрозадачам.
setTimeout и события интерфейса обрабатываются как отдельные задачи.
Очередь микрозадач очищается целиком перед следующей задачей и отрисовкой.

02 · Пример

Как объяснить на практике

Если вывести A синхронно, запланировать setTimeout с B, Promise.then с C и затем вывести D, типичный порядок будет A, D, C, B: сначала стек, затем микрозадача промиса, затем таймер.

Не заучивайте формулировку дословно. Свяжите принцип с задачей из собственного проекта — интервьюер почти наверняка попросит уточнить детали реализации и компромиссы.

03 · Ошибки

Чего избегать в ответе

Говорить, что setTimeout с нулевой задержкой выполняется немедленно.
Считать, что Promise запускает переданную функцию асинхронно: executor выполняется синхронно.
Не учитывать, что бесконечная цепочка микрозадач может задержать отрисовку.

04 · Углубление

Что могут спросить следом

  1. Что меняется при использовании await?
  2. Когда браузер может выполнить рендеринг?
  3. Чем event loop Node.js отличается от браузерного?

Практика ответа

Ответьте вслух, а не про себя

Откроем тренировку сразу на этом вопросе. Выберите грейд, сформулируйте ответ и сравните его с опорой.

Потренировать ответ