> Что такое микрозадачи и макрозадачи (JavaScript)

Уровень: junior · Роль: frontend · Категория: Технические вопросы

Компании: Т-Банк, МТГ Бизнес решения

Стек: JavaScript

> Пример ответа

Микрозадачи и макрозадачи - это два типа очередей в цикле событий (Event Loop) JavaScript, которые определяют порядок выполнения асинхронного кода.

Макрозадачи - это задачи, которые ставятся в очередь после завершения текущего синхронного кода. К ним относятся: таймеры (setTimeout, setInterval), события DOM (например, клики), загрузка ресурсов (fetch, XMLHttpRequest), а также рендеринг страницы. Они выполняются по одной за цикл.

Микрозадачи - это задачи с более высоким приоритетом, которые выполняются сразу после завершения текущего синхронного кода и до обработки следующей макрозадачи. К ним относятся: Promise.then/catch/finally, queueMicrotask, MutationObserver, а также async/await (после await код продолжается как микрозадача).

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

  1. Выполняется весь синхронный код (стек вызовов).

  2. Очищается вся очередь микрозадач (одна за другой).

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

  4. Цикл повторяется.

Пример:

JAVASCRIPT
console.log('1'); // синхронно
setTimeout(() => console.log('2'), 0); // макрозадача
Promise.resolve().then(() => console.log('3')); // микрозадача
console.log('4'); // синхронно
// Вывод: 1, 4, 3, 2

Микрозадача (3) выполняется перед макрозадачей (2), так как очередь микрозадач очищается сразу после синхронного кода. Это важно для понимания порядка выполнения асинхронных операций в JavaScript, особенно при работе с промисами и таймерами.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью