Sobes.tech
Назад к вопросам
Senior
4

Объясни разницу между микротасками и макротасками в Event Loop

Компании, где спрашивали
Type

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

sobes.tech AI

В Event Loop JavaScript различает микротаски (microtasks) и макротаски (macrotasks) по приоритету и моменту выполнения:

  • Макротаски — это задачи, которые добавляются в очередь событий (например, обработчики событий, setTimeout, setInterval, I/O операции). После выполнения текущего стека вызовов Event Loop берет следующую макротаску из очереди и выполняет её.

  • Микротаски — это задачи с более высоким приоритетом, которые выполняются сразу после текущей макротаски и перед тем, как Event Loop перейдет к следующей макротаске. Примеры микротасок: промисы (Promise.then), process.nextTick в Node.js.

Итог: после выполнения макротаски Event Loop обрабатывает все микротаски из очереди микротасок, прежде чем перейти к следующей макротаске. Это обеспечивает более быстрый отклик на асинхронные операции, связанные с промисами.

Пример:

console.log('script start');

setTimeout(() => console.log('setTimeout'), 0); // макротаска

Promise.resolve().then(() => console.log('promise1')); // микротаска
Promise.resolve().then(() => console.log('promise2')); // микротаска

console.log('script end');

// Вывод будет:
// script start
// script end
// promise1
// promise2
// setTimeout