Event Loop (событийный цикл) - главнейший механизм в JS.
JS -
однопоточный язык и некоторыми операциями можно заблокировать интерфейс пользователя. Соотвественно чтобы писать user-friendly приложение нужно делать его без блокеров IO (ввода вывода). Т.к. есть операции, которые мы не можем выполнить прямо сейчас, а когда-то потом. Для этого существует Event Loop и асинхронные инструменты Promise, async await и тд. Что блокирует интерфейс?
- циклы while, for
- тяжелые вычисления
- cинхронные операции без механизмов ассинхроности (
setTimeout, requestAnimationFrame и тд)Полезные статьи:
Эволюция асинхронного JavaScript
What is non-blocking IO?
Асинхронное программирование в однопоточных средах JavaScript