Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: event, loop, call, stack

В каком порядке выполняются Promise, setTimeout и синхронный код?

Вопрос проверяет понимание очередей выполнения JavaScript и работы event loop.

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

Сначала выполняется весь синхронный код. Затем выполняются microtask, включая обработчики Promise. После этого выполняются macrotask, такие как setTimeout. Этот порядок повторяется на каждой итерации event loop. Поэтому Promise обычно выполняется раньше setTimeout.

Длинный ответ

JavaScript выполняется в одном потоке, но умеет обрабатывать асинхронные операции.

Определение

Event loop — это механизм, который управляет выполнением кода, очередями задач и стеком вызовов.

Порядок выполнения

Перед тем как перейти к асинхронному коду, JavaScript всегда выполняет синхронные инструкции.

  1. Синхронный код

    • Выполняется сразу в call stack

  2. Microtask queue

    • Promise.then

    • queueMicrotask

  3. Macrotask queue

    • setTimeout

    • setInterval

    • события

Пример

console.log("A");

setTimeout(() => console.log("B"));

Promise.resolve().then(() => console.log("C"));

console.log("D");

Результат выполнения:

  1. A

  2. D

  3. C

  4. B

Вывод

Понимание очередей задач помогает предсказывать порядок выполнения кода и избегать ошибок в асинхронной логике.

Уровень

  • Рейтинг:

    5

  • Сложность:

    7

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#event

#loop

#call

#stack

Подпишись на React Developer в телеграм