> Каков порядок выполнения синхронных задач, микротасков и макротасков в JavaScript (JavaScript)

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

Компании: amoCRM, IT-One, Библио-Глобус

Стек: JavaScript

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

Порядок выполнения в JavaScript (Event Loop) строго регламентирован: сначала выполняются все синхронные задачи (код в текущем стеке вызовов), затем - все микротаски (Promise.then/catch/finally, queueMicrotask, MutationObserver), и только после этого - один макротаск (setTimeout, setInterval, I/O, UI-рендеринг). После выполнения одного макротаска цикл повторяется: снова обрабатываются все накопившиеся микротаски, затем следующий макротаск и так далее.

Пример:

JAVASCRIPT
console.log('1'); // синхронная
setTimeout(() => console.log('2'), 0); // макротаск
Promise.resolve().then(() => console.log('3')); // микротаск
console.log('4'); // синхронная

Вывод: 1, 4, 3, 2. Сначала синхронные 1 и 4, затем микротаск 3, затем макротаск 2.

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

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