Практический курс по асинхронному JavaScript

Решая задачи, разбираем основные темы, связанные с асинхронностью в джаваскрипте: промисы, колбэки, таймеры, event loop.

Практика

Научиться программированию можно только программируя. Можно посмотреть много видеоуроков и прочитать кучу статей, но не понять, как работает стандартный метод catch. А можно написать свой полифил — и все понять.

Каждую задачу можно отправить на проверку в тестирующую систему а-ля LeetCode и узнать результаты прохождения тестов. В отличие от литкода, к каждой задаче есть авторское решение и видео с объяснением, как к такому решению прийти. Условия, тесты и решения доступны на русском языке.

Глубина

Promise.all принимает массив промисов — отвечают на собеседовании. На самом деле не обязательно массив и не обязательно промисов. В задачах мы честно рассматриваем все случаи и разбираемся, как оно работает на самом деле.

Полнота

За годы моего преподавания я и мои студенты сходили на сотни собеседований. Если вас спросят что-либо об асинхронности, то этот вопрос есть среди задач. Если появится новая интересная задача — обязательно добавим ее в курс.

В реальности мы разбираем даже больше. Что-то слышали про функцию queueMicrotask, но с пометкой «в реальной жизни не используется»? Практические задания подобраны так, чтобы использовать максимум теории.

Пример задачи

Какие темы разбираются в курсе

Курс состоит из 35 задач и разделен на 9 разделов, которые удобно проходить последовательно.

  1. Начинаем c разминочных задач, которые можно решить с помощью стандартных методов промисов. Кроме этого, предлагается несколько подходов к решению, как можно решить задачи с нуля.
  2. Далее реализуем наиболее интересные статические методы. Это одновременно и практика использования, и практика создания промисов.
  3. Проверяем на практике, как работает event loop. Решаем задачи на понимание того, как работают очереди микро- и макротасок.
  4. Далее мы подробно разбираем, как работают методы then, catch и finally. Узнаем страшную тайну последних двух!
  5. Отдельный раздел посвящен тому, как запускать функции последовательно, параллельно, батчами и в формате асинхронной очереди. Это то, что вас спросят на собеседовании! И то, что пригодится на работе.
  6. async/await является синтаксическим сахаром над промисами, поэтому мы разбираем типовые ошибки и перерешиваем задачи из предыдущих разделов, используя новый синтаксис.
  7. В разделе про колбэки разбираем исторически предшествующий промисам способ работы с асинхронностью. Разбираемся, как писали раньше и как подружить колбэки с промисами.
  8. Задачи на рекурсивные структуры данных. Тут придется использовать все, что мы разобрали в предыдущих темах, обходя файловую систему и фильтруя каталог товаров.
  9. В заключительном разделе решаем задачи на setTimeout, в том числе классические задачи throttle и debounce.
  1. Разминка
  2. Статические методы промисов
  3. Микротаски и макротаски
  4. Методы промисов
  5. Запуск асинхронных функций
  6. Async/await
  7. Callbacks
  8. Рекурсивные структуры
  9. Таймеры

Что входит в курс

Для каждой задачи доступно подробное описание с примерами на русском языке. В курсе более 30 задач разного уровня сложности.

Прямо на сайте можно работать в онлайн-редакторе VS Code с привычной подсветкой и автокомплитом.

В любой момент вы можете отправить свое решение на проверку. Для задач написаны тесты, покрывающие требования из условий.

Ко всем задачам доступны авторские решения и подробные видеоразборы. Но я рекомендую в первую очередь пытаться решить задачи самостоятельно.

Стоимость курса

Курс был собран по результатам многолетнего преподавания джаваскрипта в формате индивидуальных занятий. На данный момент стоимость занятия составляет 3000 рублей за 1 час.

При двух занятиях в неделю мы разбираем асинхронность примерно за месяц. Курс содержит расширенный список задач.

Стоимость курса и доступа к тестирующей системе:

14 900 рублей

Бесплатные задачи на maxcode.dev

Синяков Максим Алексеевич | ИНН 780108986188
Почта: max@sinyakov.com, телеграм: @maxsinyakov