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

Что такое асинхронность?

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

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

Зачем она нужна

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

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

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

Эволюция подходов

// 1. Колбэки — легко получить «callback hell»
getUser(id, (user) => getPosts(user, (posts) => render(posts)));

// 2. Промисы — плоские цепочки
getUser(id).then(getPosts).then(render);

// 3. async/await — синхронный вид
const user = await getUser(id);
const posts = await getPosts(user);
render(posts);

Главное

  • Асинхронность ≠ многопоточность: код всё равно в одном потоке, просто выполняется по частям.
  • Тяжёлые вычисления лучше выносить в Web Workers, а не «размазывать» по event loop.

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

Асинхронность позволяет не блокировать поток на долгих операциях: их запускают, а результат обрабатывают позже через Event Loop. Инструменты — колбэки, промисы, async/await.

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