Вопрос проверяет понимание работы Event Loop в JavaScript и его роли в асинхронном выполнении кода.
Event Loop — это ключевой механизм в JavaScript, который управляет выполнением кода, сбором и обработкой событий, а также выполнением подзадач. Он позволяет JavaScript, будучи однопоточным языком, эффективно обрабатывать асинхронные операции, такие как таймеры, HTTP-запросы или взаимодействие с пользователем.
Event Loop работает по принципу цикла, который постоянно проверяет состояние Call Stack (стека вызовов). Если стек пуст, он берет первую задачу из очереди задач (Task Queue) и помещает ее в стек для выполнения. Однако есть два типа очередей: очередь микрозадач (microtask queue) и очередь макрозадач (macrotask queue). Микрозадачи имеют более высокий приоритет и выполняются перед макрозадачами.
console.log('1'); // Синхронный код
setTimeout(() => {
console.log('2'); // Макрозадача
}, 0);
Promise.resolve().then(() => {
console.log('3'); // Микрозадача
});
console.log('4'); // Синхронный код
// Вывод: 1, 4, 3, 2Event Loop используется во всех средах выполнения JavaScript: браузерах, Node.js, Deno. Он критически важен для работы с асинхронными API, такими как fetch, setTimeout, обработчики событий, и для предотвращения блокировки пользовательского интерфейса.
Понимание Event Loop необходимо для написания эффективного и предсказуемого асинхронного кода, особенно при работе с промисами, таймерами и обработкой событий. Это основа для оптимизации производительности и избежания проблем с блокировкой потока.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию