Ответ
Event Loop — это механизм в JavaScript, который отвечает за выполнение кода, обработку событий и работу асинхронных операций. Он работает в однопоточной среде, но позволяет выполнять неблокирующие операции.
Как это работает:
- Синхронный код попадает в Call Stack и выполняется сразу.
- Асинхронные операции (setTimeout, fetch и т.д.) передаются Web API, а их коллбэки попадают в Callback Queue.
- Когда Call Stack пуст, Event Loop берет коллбэки из Callback Queue и помещает их в Call Stack для выполнения.
console.log('Start'); // 1. Синхронный код
setTimeout(() => {
console.log('Timeout'); // 3. Асинхронный коллбэк
}, 0);
console.log('End'); // 2. Синхронный код
// Output: Start, End, Timeout
Микро- и макрозадачи:
- Микрозадачи (Promise, process.nextTick) выполняются сразу после текущего таска.
- Макрозадачи (setTimeout, setInterval) — в следующей итерации Event Loop.