Объясни разницу между микротасками и макротасками в Event Loop
Ответ от нейросети
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