Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: microtask, queue, event, loop

Почему Promise.then попадает в очередь microtasks?

Вопрос проверяет понимание event loop и причин существования очереди microtasks.

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

Promise.then попадает в microtask queue, чтобы выполняться сразу после текущего синхронного кода. Это даёт более высокий приоритет по сравнению с macrotasks. Такой механизм обеспечивает предсказуемость и согласованность асинхронного поведения. Он позволяет Promise работать быстрее, чем таймеры. Это важная часть спецификации JavaScript.

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

JavaScript использует несколько очередей задач, и Promise имеет особый приоритет.

Что такое microtasks

Microtasks — это очередь задач, которая:

  • выполняется после завершения текущего стека вызовов

  • очищается полностью перед переходом к следующей macrotask

Почему Promise используют microtasks

  1. Предсказуемый порядок выполнения
    Promise-колбэки выполняются раньше:

    • setTimeout

    • setInterval

    • событий DOM

  2. Целостность асинхронных цепочек
    Цепочки then выполняются без вмешательства других задач.

  3. Согласованность со спецификацией
    Такое поведение гарантировано стандартом и одинаково во всех движках.

Пример сравнения

setTimeout(() => console.log('timeout'), 0)

Promise.resolve().then(() => console.log('promise'))

Результат:

  1. promise

  2. timeout

Практическое значение

  • важно при сложных асинхронных сценариях

  • помогает избегать неожиданного порядка выполнения

  • критично для библиотек и фреймворков

Вывод

Promise.then выполняется в microtask queue, чтобы гарантировать высокий приоритет и предсказуемый порядок выполнения асинхронного кода.

Уровень

  • Рейтинг:

    5

  • Сложность:

    9

Навыки

  • JavaScript

    JavaScript

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

#microtask

#queue

#event

#loop

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