Я считаю, что важно знать цель определенного подхода (объект, элемент, компонент, дизайн, архитектура…), чтобы правильно его использовать, поэтому давайте посмотрим, почему JS основан на событиях.

В отличие от других языков, JS был создан для ситуации, когда пользователь выполняет действие за действием, и он не ожидает закрытия программы, а продолжает реагировать на его действия.

Пока вы читаете это, прокручиваете вниз, нажимаете кнопки… JS ждет… Он ждет, пока вы прокрутите вниз, нажмете кнопку, что-то сделаете… Затем он реагирует, затем снова ждет. Это не просто запуск некоторых команд и выход.

Все, что вы делаете, называется событием. Любое внешнее воздействие является событием (действие пользователя, получение данных с сервера…). Это то, чего ждет JS: СОБЫТИЯ.

Итак, когда вы что-то делаете, браузер создает событие (это просто объект с некоторыми данными) и отправляет его в JS. Простой.

Как JS обрабатывает события? Он помещает их в очередь (массив, в котором первый входящий элемент также является первым уходящим). Это называется очередью событий.

А как ждёт JS? Что ж, JS реализован на языке более низкого уровня (Chrome V8 на C++), поэтому используется бесконечный цикл while:

while(true) {
  // process events if any
}

Это цикл событий. Проще говоря: JS спрашивает: «Эй, есть чем заняться?». Если нет, JS спрашивает снова и снова. Если да, это делается, удаляется из очереди, JS снова спрашивает.

JS такой хороший парень :D

Напомним, JS основан на событиях, потому что он реагирует на события. Он поддерживает список событий, которые произошли. Он перебирает этот список и вызывает функции, связанные с этими событиями.

Итак, как мы можем извлечь из этого выгоду? Что ж, понимание этой основной структуры помогает нам лучше понять и использовать:

1. Обратные вызовы были созданы как способ реагировать на события
2. Асинхронность является результатом использования цикла обработки событий (JS является однопоточным)
3. Промисы позволяют добавлять событие, когда задача сделано, что позволяет программе работать асинхронно
4. …

Не забудьте порекомендовать и/или прокомментировать, если статья вам понравилась.