PassFront
  1. PassFront
  2. База знаний
  3. Асинхронность и Event Loop

Для чего нужна асинхронность в JavaScript?

Асинхронность и Event Loop

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

Проблема

JavaScript однопоточный: пока выполняется синхронный код, ничего другого произойти не может. Если бы запрос к серверу выполнялся синхронно, интерфейс «замерзал» бы на время ожидания.

// Если бы это блокировало поток — UI завис бы
const data = await fetch('/api'); // асинхронно, поток свободен

Что даёт асинхронность

  • Отзывчивость UI — пользователь может взаимодействовать, пока идёт запрос.
  • Параллельное ожидание — несколько операций ждут одновременно (Promise.all).
  • Эффективность — поток не простаивает на I/O.

Как реализуется

Долгие операции обрабатывает браузер/ОС вне JS-потока, а их коллбэки Event Loop выполняет, когда стек освободится. Инструменты: колбэки, промисы, async/await.

Нюансы

Асинхронность ≠ многопоточность: код по-прежнему в одном потоке, просто не блокируется на ожидании. Тяжёлые вычисления асинхронность не ускоряет — для них нужны Web Workers.

Коротко для собеседования

Асинхронность нужна, чтобы не блокировать однопоточный JS на долгих операциях (сеть, таймеры, I/O) и сохранять отзывчивость UI. Долгие операции ждут вне потока, коллбэки выполняет Event Loop. Для тяжёлых вычислений нужны Web Workers.

Другие вопросы раздела