Sobes.tech
Назад к вопросам
Middle+
6

Какая последовательность выполнения микротасок и макротасок в Event Loop?

Компании, где спрашивали
М.Видео/эльдорадо

Ответ от нейросети

sobes.tech AI

В JavaScript Event Loop порядок выполнения следующий:

  1. Макротаски (Task queue) — это, например, обработчики событий, setTimeout, setInterval, сетевые запросы.
  2. Микротаски (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