Назад к вопросам
Middle+
6
Какая последовательность выполнения микротасок и макротасок в Event Loop?
Компании, где спрашивали
М.Видео/эльдорадо
Ответ от нейросети
sobes.tech AI
В JavaScript Event Loop порядок выполнения следующий:
- Макротаски (Task queue) — это, например, обработчики событий, setTimeout, setInterval, сетевые запросы.
- Микротаски (Microtask queue) — это промисы (.then/.catch/.finally), MutationObserver.
Последовательность:
- Выполняется одна макротаска из очереди.
- После выполнения макротаски выполняются все микротаски из очереди микротасок подряд.
- После очистки микротасок Event Loop переходит к следующей макротаске.
Иными словами, микротаски выполняются сразу после текущей макротаски и перед следующей макротаской, что позволяет обрабатывать промисы и другие микротаски с высоким приоритетом.
Пример:
console.log('script start');
setTimeout(() => console.log('setTimeout'), 0);
Promise.resolve().then(() => console.log('promise1')).then(() => console.log('promise2'));
console.log('script end');
Вывод будет:
script start
script end
promise1
promise2
setTimeout