Как работает JavaScript Runtime: стек вызовов, Web API и цикл событий
Как однопоточный JavaScript обрабатывает асинхронные операции, не замораживая браузер.
→ Движок V8 анализирует код и выполняет синхронные задачи в стеке вызовов (LIFO — Last In, First Out). Это быстро, но может выполнять только одну задачу за раз.
→ Асинхронные операции (такие как setTimeout(), fetch, события DOM) немедленно передаются в Web API (предоставляются браузером или Node). Это предотвращает блокировку основного потока.
→ Когда асинхронная задача завершена, её колбэк помещается в очередь.
✓ Очередь микрозадач (.then(), await) имеет высокий приоритет.
✓ Очередь колбэков (setTimeout, операции ввода-вывода) имеет стандартный приоритет.
→ Цикл событий (Event Loop) выступает в роли неутомимого координатора. Он постоянно проверяет: пуст ли стек вызовов?
→ Если стек пуст, цикл событий помещает все ожидающие микрозадачи, а затем следующий элемент из очереди колбэков в стек вызовов для выполнения.
Post #2468
1.7K

- 🔥 10
- 🤮 4
- ❤ 3
- 👏 1