Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: event, loop, promise, settimeout

Как выполняется Promise, если его вызов обёрнут в setTimeout?

Вопрос нужен, чтобы оценить, понимает ли кандидат различие между Promise и setTimeout и их место в очередях задач.

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

setTimeout помещает колбэк в очередь макрозадач. Promise внутри него создаётся и резолвится уже во время выполнения этой макрозадачи. Микрозадачи Promise будут выполнены сразу после завершения текущего колбэка setTimeout, но до следующей макрозадачи. Это влияет на порядок выполнения кода.

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

Асинхронность в JavaScript основана на очередях задач, и setTimeout с Promise задействуют разные уровни этой системы.

Очереди задач в браузере

Перед разбором примера важно понимать:

  • setTimeout → макрозадача

  • Promise.then / await → микрозадача

Микрозадачи всегда выполняются раньше следующей макрозадачи.

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

setTimeout(() => {
  Promise.resolve().then(() => {
    console.log('promise')
  })
}, 0)

console.log('sync')

Последовательность:

  1. Выполняется синхронный код

  2. Колбэк setTimeout попадает в очередь макрозадач

  3. После его выполнения добавляется микрозадача Promise

  4. Микрозадача выполняется до следующей макрозадачи

Практические последствия

  • Promise внутри setTimeout не «обгоняет» синхронный код

  • Но он выполняется раньше других таймеров

  • Это важно при оптимизации и дебаге асинхронного кода

Краткий вывод

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

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    5

  • Сложность:

    5

Навыки

  • JavaScript

    JavaScript

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

#event

#loop

#promise

#settimeout

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

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию