Итоги курса
Курс об асинхронности в JavaScript.
Что ты узнал
- Синхронный и асинхронный код — разница, event loop
- Callbacks — error-first, callback hell
- Промисы — состояния,
then,catch,finally, цепочки - Комбинаторы —
all,allSettled,race,any - async/await — синтаксис, обработка ошибок, параллельность
- Event loop — микро- и макрозадачи, порядок
- Fetch API — запросы, AbortController, обработка ошибок
- Обработка ошибок — try/catch, retry, кастомные ошибки
- Асинхронные итераторы —
for await...of, генераторы - Таймеры —
setTimeout,setInterval,requestAnimationFrame - Паттерны — пул, retry, circuit breaker, дедупликация
Ключевые идеи
Асинхронность — не многопоточность. Один поток, но операции не блокируют.
Промисы — фундамент. async/await — синтаксический сахар над ними.
Параллельно быстрее. Promise.all вместо последовательных await.
Обрабатывай ошибки. try/catch, .catch, проверка res.ok.
Ограничивай параллельность. Сотни запросов одновременно — плохо.
Отменяй устаревшее. AbortController для запросов.
Event loop важен. Промисы раньше таймеров, микрозадачи блокируют.
Частые ошибки
awaitвforEach— не работает- Последовательные
awaitвместоPromise.all - Забыть
catch— unhandled rejection - Не проверять
res.okв fetch - Бесконечный retry без ограничения
- Блокировать поток тяжёлыми вычислениями
- Забыть отменить запрос при размонтировании
- Накопление вызовов в
setInterval
Что дальше
- Web Workers — многопоточность
- Streams — потоковая обработка
- WebSockets — реальное время
- SSE — server-sent events
- TanStack Query — кеширование данных
- RxJS — реактивные потоки
Полезные ссылки
- MDN Promises: developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Promise
- javascript.info/async
- MDN Fetch: developer.mozilla.org/ru/docs/Web/API/Fetch_API
- Jake Archibald «In The Loop» — доклад про event loop
Заключение
Асинхронность — основа современного JavaScript. Почти всё в вебе асинхронно: запросы, события, таймеры, файлы. Понимание промисов, async/await и event loop отличает новичка от уверенного разработчика. Правила: параллельно где можно, обрабатывай ошибки всегда, отменяй устаревшее, ограничивай нагрузку.