Асинхронное программирование [Тимур Шемсединов]
Для JavaScrip и TypeScript. 9 часов основного материала и более 45 часов дополнительного.
Лекции на двух языках: русском и украинском.
Этому курсу уже 15 лет, я обновляю его каждый год, и за это время он стал самым крупным и полным сборником знаний об асинхронном программировании. В интернете полно устаревших материалов по JavaScript, и даже то, как люди писали асинхронный код 5–7 лет назад, уже мало похоже на современные практики. В открытом доступе есть все материалы, записанные до 2020 года: открытый курс сообщества Metarhia по асинхронному программированию. Старый курс стал слишком громоздким, но его материалы также включены в этот курс как дополнительные и исторические, поскольку поддержку легаси никто не отменял.
Краткое содержание
Для написания прикладного кода достаточно знаний из первого столбца таблицы. Второй столбец полезен в качестве дополнительных знаний. Для бэкенда на Node нужно освоить два первых столбца. Третий столбец содержит системные сведения, которые нужны для разработки инструментов, платформ и библиотек. Четвертый столбец — это дополнительные абстракции, которые можно изучать выборочно. Они понадобятся не всем, но если вы работаете в проектах, где много функционального и/или реактивного программирования, пятый столбец — это вещи, которые морально устарели и могут рассматриваться как интересный антиквариат.
Акцент на практическом применении (примеры кода из реальных проектов)
Содержание:
Цена 16500 руб. (200 долларов)
Для JavaScrip и TypeScript. 9 часов основного материала и более 45 часов дополнительного.
Лекции на двух языках: русском и украинском.
Этому курсу уже 15 лет, я обновляю его каждый год, и за это время он стал самым крупным и полным сборником знаний об асинхронном программировании. В интернете полно устаревших материалов по JavaScript, и даже то, как люди писали асинхронный код 5–7 лет назад, уже мало похоже на современные практики. В открытом доступе есть все материалы, записанные до 2020 года: открытый курс сообщества Metarhia по асинхронному программированию. Старый курс стал слишком громоздким, но его материалы также включены в этот курс как дополнительные и исторические, поскольку поддержку легаси никто не отменял.
- Обзор контрактов и абстракций
- Обзор асинхронного программирования на украинском языке
- Обзор параллельного программирования
Краткое содержание
Для написания прикладного кода достаточно знаний из первого столбца таблицы. Второй столбец полезен в качестве дополнительных знаний. Для бэкенда на Node нужно освоить два первых столбца. Третий столбец содержит системные сведения, которые нужны для разработки инструментов, платформ и библиотек. Четвертый столбец — это дополнительные абстракции, которые можно изучать выборочно. Они понадобятся не всем, но если вы работаете в проектах, где много функционального и/или реактивного программирования, пятый столбец — это вещи, которые морально устарели и могут рассматриваться как интересный антиквариат.
Акцент на практическом применении (примеры кода из реальных проектов)
- Актуальность и соответствие стандартам по состоянию на 2023–2025 годы
- Задачи и разбор их решений, семинары, ревью кода (курс — это не только видео)
- Рекомендации по выбору стиля и абстракций асинхронности в зависимости от задачи
- Внимание к корректной обработке ошибок во всех стилях асинхронности
- Акцент на надёжность, поддерживаемость, тестируемость, снижение зацепления
- Примеры и задачи по исправлению скрытых проблемных состояний и гонок данных
- Синтаксис JavaScript без всяких хитростей
- Уверенно владейте git, у вас должен быть аккаунт на github
- Любая среда разработки, IDE или редактор
Содержание:
- Контракты асинхронности на базе callback
- Минимально необходимое понимание рантайма
- Паттерны Actor, Reactor, Proactor
- Контракты на базе событий
- Абстракция потоков Stream
- Контракт Thenable
- Контракт Promise
- Контракт асинхронных функций async/await
- Контракт сигналов Signals
- Обработка ошибок
- Асинхронная очередь AsyncQueue
- Асинхронный пул AsyncPool
- Асинхронная коллекция Collector
- Паттерн "цепочка ответственности"
- Конвертеры контрактов asyncify, callbackify
- Предотвращение состояния гонки
- Async Generator и Async Iterator
- Абстракции портированные из параллельного программирования
- Абстракции параллельного программирования
- Асинхронная композиция compose callbacks & async compose
- Асинхронность на потоках событий RxJS
- Модель акторов actor model
- Функциональное асинхронное программирование, контракт Future
- Асинхронность на синхронных генераторах function*/yield
- Контракты семейства Deferred
- Async.js
- Коллекция асинхронных абстракций Metasync
- Трекинг асинхронных контекстов
- Принципы и паттерны
Контракты асинхронности на базе callback
Контракты Callback и Callback-last-error-first
Примеры кода
Задания по колбекам и созвон с разбором заданий
Функции высшего порядка, колбеки, события на JavaScript
Асинхронное программирование на callback`ах в JavaScript
V8: оптимизируем возврат из функции в JavaScript через return, resolve, callback — Деми Мурыч
Минимально необходимое понимание рантайма: Event loop, I/O, таймеры
Фазы Event-loop в V8 и Node.js
Стрим с разбором Event loop и асинхронности
Примеры кода
Задания по таймерам
Event loop, асинхронность, таймеры, колбеки, промисы, async/await
Асинхронное программирования в JavaScript, Node.js: callback, promise, thenable, async/await
Паттерны Actor, Reactor, Proactor
Паттерны Actor, Reactor, Proactor
Actor + Actor Compose (композиция актора и состояния)
Паттерн Reactor (реактор): как устроен Event Loop в Node.js
Паттерн Proactor
Семинар: Паттерны Actor, Reactor, Proactor для JavaScript и TypeScript
Контракты на базе событий
События: EventTarget, EventEmitter
GoF Pattern Observer
Примеры кода по событиям
Задания по событиям
EventEmitter из старой лекции
Примеры кода из старой лекции по EventEmitter
Code review: Observable, EventEmitter, EventTarget
Абстракция потоков Stream
Стримы Readable, Writable, Transform, открытый конструктор, буферизация, backpressure
Web Streams — браузерное API для потоков событий
Примеры кода
Паттерн открытый конструктор (Revealing Constructor)
Примеры кода
Потоки (Streams) в Node.js
HTTP сервер в Node.js, req, res, сокеты и потоки (streams)
Контракт Thenable
Контракт Thenabe
Thenable из старой лекции
Thenable и легковесный await
Примеры кода
Задания по Thenabe и созвон с разбором заданий
Контракт Promise
Promise: then/catch/finally и методы класса all, allSettled, race, any
Асинхронность на промисах из старой лекции
Примеры кода
Задания по Promise и созвон с разбором заданий
Контракт асинхронных функций async/await
Асинхронные функции
Асинхронные функции из старой лекции
Примеры кода
Задания по async/await
Контракт сигналов Signals
Сигналы: signal, computed, effect
Примеры кода
Задания по сигналам
Обработка ошибок, их выявление и решение проблем со стекрейсом
Обработка ошибок, логирование и аггрегирование
Семинар: Errors, exceptions, operational, soft, hard, recovery, logging
Реализация Graceful shutdown в Node.js, unhandled exceptions, async stack trace
Обработка ошибок из старой лекции
Asyns stask trase
Graceful shutdown
Примеры кода
Задания по обработке ошибок
Асинхронная очередь AsyncQueue
Семинар: Асинхронная очередь — AsyncQueue, ConcurrentQueue
Node.js Queue optimized for JavaScript V8: Circular Buffer, Unrolled List, Unrolled Queue
Конкурентная асинхронная очередь из старой лекции
Примеры кода
Асинхронный пул AsyncPool
Паттерн Factory Method
Паттерны: Object Pool, Factory
Асинхронный Pool
Семинар: Creator, Factory, Factory Method, Object Pool
Асинхронный пул для worker thread pool в Node.js
Фабрики и пулы объектов в JavaScript, factorify, poolify
Примеры кода: Factory, Factory Method
Примеры кода Pool, AsynsPool
Асинхронная коллекция Collector
Асинхронные коллекции (собираем значения до готовности)
Асинхронные коллекторы данных
Примеры кода
Паттерн "цепочка ответственности"
Pattern: Chain of responsibility
Примеры кода
Конвертеры контрактов asyncify, callbackify
GoF Patterns: Adapter
Асинхронные адаптеры
Семинар по адаптерам для Node.js и асинхронного программирования
Node.js ревью кода promisify — Тимур Шемсединов и Деми Мурыч
Асинхронные адаптеры из старой лекции
Примеры кода
Предотвращение состояния гонки по данным и управлению в асинхронном коде
Отмена асинхронных операций: AbortController, AbortSignal
Документация на MDN
Async Generator и Async Iterator
Generator, iterator, iterable
Async generator, Async iterator, Async iterable
Генераторы и асинхронные генераторы из старой лекции
Генераторы
Асинхронные генераторы
Итераторы и асинхронные итераторы из старой лекции
Итераторы
Асинхронные итераторы
Абстракции портированные из параллельного программирования в асинхронное
Семафоры и мьютексы в JavaScript и Node.js
Асинхронные абстракции: Semaphore, Mutex
Блокировки WebLocks API
MDN блокировки - WebLocks API
Блокировки Lock, Spin Lock
Абстракции параллельного программирования
Многопоточность в Node.js
Web Locks API in Node.js and browser
Потоки и процессы в JavaScript, асинхронное и параллельное программирование на Node.js и в браузере
Потоки та процеси українською для Web та Node.js, Atomics/CAS, шарена пам'ять, блокування
Межпроцессовое взаимодействие в Node.js
Межпроцессовое и межпотоковое взаимодействие, MessageChannel, BroadcastChannel
Корутины coroutines
Асинхронная композиция compose callbacks & async compose
Асинхронная композиция: compose, pipe — функциональное программирование
Асинхронная композиция функций
Примеры кода
Асинхронность на потоках событий RxJS
Асинхронность на RxJS из старой лекции
Примеры кода
Модель акторов actor model
Модель акторов українською
Примеры кода
Библиотека do
Функциональное асинхронное программирование, контракт Future
Асинхронность на фьючерах без состояния
Примеры кода
Асинхронность на синхронных генераторах function*/yield
Мидлвары middleware как антипаттерн
Node.js Middleware – никогда больше!
Примеры кода
Контракты семейства Deferred
Deferred: Асинхронность на диферах с состоянием
Примеры кода
Async.js
Легаси код на библиотеке Async.js
Примеры кода
Коллекция асинхронных абстракций Metasync
Архивная лекция
Трекинг асинхронных контекстов
AsyncLocalStorage, AsyncResource
Примеры использования AsyncLocalStorage и AsyncResource
Принципы и паттерны с адаптацией для JavaScript, TypeScript, Node.js и асинхронного программирования
Принципы SOLID
Паттерны GRASP
Контрактное программирование
Задания по паттерну Adapter
Контракты Callback и Callback-last-error-first
Примеры кода
Задания по колбекам и созвон с разбором заданий
Функции высшего порядка, колбеки, события на JavaScript
Асинхронное программирование на callback`ах в JavaScript
V8: оптимизируем возврат из функции в JavaScript через return, resolve, callback — Деми Мурыч
Минимально необходимое понимание рантайма: Event loop, I/O, таймеры
Фазы Event-loop в V8 и Node.js
Стрим с разбором Event loop и асинхронности
Примеры кода
Задания по таймерам
Event loop, асинхронность, таймеры, колбеки, промисы, async/await
Асинхронное программирования в JavaScript, Node.js: callback, promise, thenable, async/await
Паттерны Actor, Reactor, Proactor
Паттерны Actor, Reactor, Proactor
Actor + Actor Compose (композиция актора и состояния)
Паттерн Reactor (реактор): как устроен Event Loop в Node.js
Паттерн Proactor
Семинар: Паттерны Actor, Reactor, Proactor для JavaScript и TypeScript
Контракты на базе событий
События: EventTarget, EventEmitter
GoF Pattern Observer
Примеры кода по событиям
Задания по событиям
EventEmitter из старой лекции
Примеры кода из старой лекции по EventEmitter
Code review: Observable, EventEmitter, EventTarget
Абстракция потоков Stream
Стримы Readable, Writable, Transform, открытый конструктор, буферизация, backpressure
Web Streams — браузерное API для потоков событий
Примеры кода
Паттерн открытый конструктор (Revealing Constructor)
Примеры кода
Потоки (Streams) в Node.js
HTTP сервер в Node.js, req, res, сокеты и потоки (streams)
Контракт Thenable
Контракт Thenabe
Thenable из старой лекции
Thenable и легковесный await
Примеры кода
Задания по Thenabe и созвон с разбором заданий
Контракт Promise
Promise: then/catch/finally и методы класса all, allSettled, race, any
Асинхронность на промисах из старой лекции
Примеры кода
Задания по Promise и созвон с разбором заданий
Контракт асинхронных функций async/await
Асинхронные функции
Асинхронные функции из старой лекции
Примеры кода
Задания по async/await
Контракт сигналов Signals
Сигналы: signal, computed, effect
Примеры кода
Задания по сигналам
Обработка ошибок, их выявление и решение проблем со стекрейсом
Обработка ошибок, логирование и аггрегирование
Семинар: Errors, exceptions, operational, soft, hard, recovery, logging
Реализация Graceful shutdown в Node.js, unhandled exceptions, async stack trace
Обработка ошибок из старой лекции
Asyns stask trase
Graceful shutdown
Примеры кода
Задания по обработке ошибок
Асинхронная очередь AsyncQueue
Семинар: Асинхронная очередь — AsyncQueue, ConcurrentQueue
Node.js Queue optimized for JavaScript V8: Circular Buffer, Unrolled List, Unrolled Queue
Конкурентная асинхронная очередь из старой лекции
Примеры кода
Асинхронный пул AsyncPool
Паттерн Factory Method
Паттерны: Object Pool, Factory
Асинхронный Pool
Семинар: Creator, Factory, Factory Method, Object Pool
Асинхронный пул для worker thread pool в Node.js
Фабрики и пулы объектов в JavaScript, factorify, poolify
Примеры кода: Factory, Factory Method
Примеры кода Pool, AsynsPool
Асинхронная коллекция Collector
Асинхронные коллекции (собираем значения до готовности)
Асинхронные коллекторы данных
Примеры кода
Паттерн "цепочка ответственности"
Pattern: Chain of responsibility
Примеры кода
Конвертеры контрактов asyncify, callbackify
GoF Patterns: Adapter
Асинхронные адаптеры
Семинар по адаптерам для Node.js и асинхронного программирования
Node.js ревью кода promisify — Тимур Шемсединов и Деми Мурыч
Асинхронные адаптеры из старой лекции
Примеры кода
Предотвращение состояния гонки по данным и управлению в асинхронном коде
Отмена асинхронных операций: AbortController, AbortSignal
Документация на MDN
Async Generator и Async Iterator
Generator, iterator, iterable
Async generator, Async iterator, Async iterable
Генераторы и асинхронные генераторы из старой лекции
Генераторы
Асинхронные генераторы
Итераторы и асинхронные итераторы из старой лекции
Итераторы
Асинхронные итераторы
Абстракции портированные из параллельного программирования в асинхронное
Семафоры и мьютексы в JavaScript и Node.js
Асинхронные абстракции: Semaphore, Mutex
Блокировки WebLocks API
MDN блокировки - WebLocks API
Блокировки Lock, Spin Lock
Абстракции параллельного программирования
Многопоточность в Node.js
Web Locks API in Node.js and browser
Потоки и процессы в JavaScript, асинхронное и параллельное программирование на Node.js и в браузере
Потоки та процеси українською для Web та Node.js, Atomics/CAS, шарена пам'ять, блокування
Межпроцессовое взаимодействие в Node.js
Межпроцессовое и межпотоковое взаимодействие, MessageChannel, BroadcastChannel
Корутины coroutines
Асинхронная композиция compose callbacks & async compose
Асинхронная композиция: compose, pipe — функциональное программирование
Асинхронная композиция функций
Примеры кода
Асинхронность на потоках событий RxJS
Асинхронность на RxJS из старой лекции
Примеры кода
Модель акторов actor model
Модель акторов українською
Примеры кода
Библиотека do
Функциональное асинхронное программирование, контракт Future
Асинхронность на фьючерах без состояния
Примеры кода
Асинхронность на синхронных генераторах function*/yield
Мидлвары middleware как антипаттерн
Node.js Middleware – никогда больше!
Примеры кода
Контракты семейства Deferred
Deferred: Асинхронность на диферах с состоянием
Примеры кода
Async.js
Легаси код на библиотеке Async.js
Примеры кода
Коллекция асинхронных абстракций Metasync
Архивная лекция
Трекинг асинхронных контекстов
AsyncLocalStorage, AsyncResource
Примеры использования AsyncLocalStorage и AsyncResource
Принципы и паттерны с адаптацией для JavaScript, TypeScript, Node.js и асинхронного программирования
Принципы SOLID
Паттерны GRASP
Контрактное программирование
Задания по паттерну Adapter
https://www.patreon.com/tshemsedinov/shop/async-2025-675252