Проверяет понимание асинхронного выполнения кода в JavaScript.
Event Loop управляет выполнением асинхронного кода.
Микрозадачи (Promise, queueMicrotask) выполняются сразу после текущего синхронного кода.
Макрозадачи (setTimeout, setInterval) выполняются после микрозадач и рендера страницы.
JavaScript однопоточен, но Event Loop позволяет обрабатывать асинхронные операции:
Микрозадачи:
Выполняются перед макрозадачами.
Примеры:
Promise.resolve().then(() => console.log("Микрозадача"));
queueMicrotask(() => console.log("Ещё одна"));Макрозадачи:
Выполняются после микрозадач.
Примеры:
setTimeout(() => console.log("Макрозадача"), 0);Порядок выполнения:
console.log("Синхронный код");
Promise.resolve().then(() => console.log("Микрозадача"));
setTimeout(() => console.log("Макрозадача"), 0);
// Вывод:
// "Синхронный код" → "Микрозадача" → "Макрозадача"Итог:
Микрозадачи — для срочных асинхронных операций (например, обновление состояния).
Макрозадачи — для менее приоритетных задач (анимации, логирование).