Асинхронность
Event loop, промисы, async/await и продвинутые асинхронные паттерны
О чём эта глава
JavaScript — однопоточный язык, но при этом способен обрабатывать тысячи операций без блокировки: сетевые запросы, таймеры, пользовательские события. Как это возможно? Ответ — в асинхронной модели, построенной на event loop.
В этой главе мы разберём, как работает асинхронность от фундамента (event loop, call stack, очереди задач) до практических паттернов (retry, debounce, отмена запросов). Ты поймёшь, почему setTimeout(fn, 0) не выполняется мгновенно, чем Promise.all отличается от Promise.allSettled, и как не попасть в ловушки async/await.
Содержание
- Синхронный vs асинхронный код
- Event Loop: как JavaScript управляет асинхронностью
- Promises: от callback hell к цепочкам
- Async/Await: синтаксический сахар и подводные камни
- Паттерны и реальные задачи
Что ты научишься делать
- Объяснять event loop и порядок выполнения microtask/macrotask на собеседовании
- Писать корректный асинхронный код без race conditions и утечек
- Выбирать между
Promise.all,Promise.allSettled,Promise.raceиPromise.any - Обрабатывать ошибки в async/await правильно
- Реализовывать retry, timeout, debounce и другие продвинутые паттерны
- Отменять асинхронные операции через AbortController
Связанные темы
- Замыкания — замыкания лежат в основе callbacks и async-функций
Задания
Перейти к заданиям — 3 easy, 2 medium, 3 hard
Песочница
Открыть песочницу — экспериментируй с промисами и event loop