Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

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

Что относится к microtask, а что к macrotask?

Вопрос проверяет понимание приоритетов выполнения асинхронных задач в Event Loop.

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

Microtask и macrotask — это разные очереди задач в Event Loop.
Microtask имеют более высокий приоритет и выполняются раньше.
Macrotask выполняются по одной за итерацию цикла.
Неправильное понимание их порядка часто приводит к неожиданному поведению кода.

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

Чтобы корректно работать с асинхронным кодом, важно понимать, какие операции попадают в какую очередь.

Определение

  • Microtask — задачи с высоким приоритетом, выполняемые сразу после синхронного кода

  • Macrotask — задачи с более низким приоритетом, выполняемые по очереди между перерисовками UI

Что относится к microtask

К microtask относятся:

  • обработчики Promise.then / catch / finally

  • queueMicrotask

  • MutationObserver

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

Что относится к macrotask

К macrotask относятся:

  • setTimeout

  • setInterval

  • обработчики DOM-событий

  • сетевые и I/O операции

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

Почему это важно

Из-за разного приоритета:

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

  • порядок логов может выглядеть «сломано»

  • UI может долго не обновляться

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

Microtask выполняются раньше и полностью очищаются перед переходом к macrotask. Это ключевой момент при отладке асинхронного кода.

Уровень

  • Рейтинг:

    5

  • Сложность:

    7

Навыки

  • JavaScript

    JavaScript

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

#microtask

#macrotask

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