Расскажи про Event Loop в JavaScript.
Answer from AI
sobes.tech AI
Event Loop в JavaScript — это механизм, который позволяет выполнять асинхронный код, несмотря на однопоточную природу языка. Он отвечает за обработку очереди событий и колбэков, обеспечивая неблокирующее выполнение.
Когда выполняется код, синхронные операции идут сразу, а асинхронные (например, setTimeout, промисы, события) помещаются в соответствующие очереди (callback queue, microtask queue). Event Loop постоянно проверяет стек вызовов — если он пуст, берёт задачи из очередей и выполняет их.
Особенность в том, что microtasks (например, обработчики промисов) имеют приоритет и выполняются сразу после текущего стека, до того, как Event Loop перейдёт к следующей задаче из callback queue.
Пример:
console.log('Start');
setTimeout(() => console.log('Timeout'), 0);
Promise.resolve().then(() => console.log('Promise'));
console.log('End');
Вывод будет:
Start
End
Promise
Timeout
Это потому, что промисы попадают в microtask queue и выполняются раньше, чем задачи из setTimeout.