Получить доступ

Асинхронность и event loop

Основа с Junior

Как однопоточный JavaScript делает много дел сразу — стек вызовов, очереди задач, промисы и async/await.

Код выполняется в одном потоке. Долгие операции (сеть, таймеры) идут вне его, а их колбэки ставятся в очереди. Event loop: выполнить задачу из стека → выполнить все микрозадачи (промисы, queueMicrotask) → отрисовать кадр при необходимости → взять следующую макрозадачу (таймер, событие, сообщение).

console.log(1);
setTimeout(() => console.log(2));
Promise.resolve().then(() => console.log(3));
console.log(4);
// 1 4 3 2

Что важно знать

  • Промис: pending → fulfilled или rejected, один раз. then возвращает новый промис — отсюда цепочки.
  • Promise.all падает на первой ошибке, allSettled ждёт всех, race — первый завершившийся, any — первый успешный.
  • async/await — синтаксис над промисами; ошибки ловят try/catch.
  • Последовательные await в цикле там, где запросы независимы, — частая потеря скорости; параллельно — Promise.all.
  • Долгий синхронный код блокирует интерфейс: его дробят или выносят в Web Worker.
  • Отмена запросов — AbortController.

Критерии освоения

Junior ≈ 8 ч

  • Объясняет event loop, микро- и макрозадачи и предсказывает порядок вывода
  • Пишет асинхронный код на async/await с обработкой ошибок

Практика. Решить 15 задач на порядок вывода с промисами и таймерами и переписать код на колбэках на async/await.

Middle ≈ 6 ч

  • Выбирает между Promise.all, allSettled, race и any и запускает независимые запросы параллельно
  • Отменяет запросы через AbortController и защищается от гонок ответов
  • Реализует Promise.all вручную

Практика. Реализовать Promise.all и функцию запросов с ограничением параллельности и повторами.

Вопросы с собеседований

Документация

← Вся карта «Frontend-разработчик»

Закрытая бета

Знать тему — половина дела

На живом собеседовании sotto слышит вопрос интервьюера и показывает короткий ответ и план. Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем