Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

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

Какие API создают microtask, а какие macrotask?

Вопрос проверяет понимание event loop и очередей задач, от которых зависит порядок выполнения кода и отзывчивость интерфейса.

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

Microtask — это задачи с более высоким приоритетом, которые выполняются сразу после текущего стека вызовов. Macrotask — задачи с обычным приоритетом, которые обрабатываются по очереди между рендерами. Promise и queueMicrotask создают microtask, а setTimeout и события DOM — macrotask. Разница влияет на порядок выполнения и рендер.

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

Определение

Microtask — задача, которая выполняется сразу после завершения текущего синхронного кода.
Macrotask — задача, которая попадает в очередь событий и выполняется в следующем цикле event loop.

API, создающие microtask

Сначала перечислим задачи с высоким приоритетом.

  1. Promise.then / catch / finally

  2. queueMicrotask

  3. MutationObserver

Promise.resolve().then(() => {
  console.log("microtask");
});

API, создающие macrotask

Теперь задачи с обычным приоритетом.

  1. setTimeout

  2. setInterval

  3. setImmediate (в среде Node.js)

  4. DOM-события (click, scroll)

  5. requestAnimationFrame (особый случай, перед рендером)

setTimeout(() => {
  console.log("macrotask");
}, 0);

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

Общая схема выглядит так:

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

  2. Выполняются все microtask

  3. Выполняется рендер

  4. Выполняется одна macrotask

Практический вывод

  1. Microtask имеют приоритет над macrotask

  2. Неправильное использование Promise может “отодвигать” рендер

  3. Это важно при оптимизации UI

Вывод

Microtask и macrotask — разные очереди с разным приоритетом. Знание API, которые их создают, помогает предсказывать порядок выполнения кода.

Уровень

  • Рейтинг:

    5

  • Сложность:

    7

Навыки

  • JavaScript

    JavaScript

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

#event

#loop

#microtask

#macrotask

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