Ежедневно, с 8:30 до 22:30
Предзаказ
1960

Асинхронное программирование на Javascript

Средняя оценка 0.0 из 5 на основании 0 голосов (0)
1 0
0
4500 ₽
16500 ₽
-73%
Кэшбэк: 5% (225 ₽)
Курс будет выдан в течение 1-3 часов после оплаты.
Категории:

Этому курсу уже 15 лет, я обновляю его каждый год, и за это время он стал самым крупным и полным сборником знаний об асинхронном программировании. В интернете полно устаревших материалов по JavaScript, и даже то, как люди писали асинхронный код 5–7 лет назад, уже мало похоже на современные практики. В открытом доступе есть все материалы, записанные до 2020 года: открытый курс сообщества Metarhia по асинхронному программированию. Старый курс стал слишком громоздким, но его материалы также включены в этот курс как дополнительные и исторические, поскольку поддержку легаси никто не отменял.

  • Обзор контрактов и абстракций
  • Обзор асинхронного программирования на украинском языке
  • Обзор параллельного программирования

Следует также отметить, что в системном и прикладном коде асинхронное программирование должно выглядеть принципиально по-разному. Полностью скрыть от продуктового разработчика сложность асинхронного кода за абстракциями не получится, потому что он в любом случае будет работать с таймерами, событиями, стримами, fetch и другими асинхронными API, но его можно писать в десятки раз проще, чем асинхронный код на системном уровне. Что касается системного уровня, то здесь необходимо использовать теорию очередей (системы массового обслуживания), модель акторов, часть абстракций из параллельного программирования (семафоры, рандеву, атомарные операции).

Акцент на практическом применении (примеры кода из реальных проектов)

  • Актуальность и соответствие стандартам по состоянию на 2023–2026 годы
  • Задачи и разбор их решений, семинары, ревью кода (курс — это не только видео)
  • Рекомендации по выбору стиля и абстракций асинхронности в зависимости от задачи
  • Внимание к корректной обработке ошибок во всех стилях асинхронности
  • Акцент на надёжность, поддерживаемость, тестируемость, снижение зацепления
  • Примеры и задачи по исправлению скрытых проблемных состояний и гонок данных

Что нужно знать и уметь на входе:

  • Синтаксис 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
Характеристики
Наличие Предзаказ Тип Видео Размещение на сайте 03.09.2025 Артикул 1960

Об авторах

Фото: Тимур Шемсединов
0.0
Тимур Шемсединов
Лидер Metarhia и преподаватель КПИ, 30 лет в разработке ПО. Автор курсов по асинхронному программированию на JavaScript, Node.js и паттернам проектирования.

Отзывы и комментарии

Отзывов ещё нет, будьте первыми

Написать отзыв
Нажимая "Отправить" Вы соглашаетесь с правилами публикации и даёте согласие на обработку персональных данных. Администрация не несёт ответственности за содержание отзывов.

Похожие товары:

Постер товара: JavaScript Advanced - продвинутые концепции языка и ООП
Скидка 75%
Предзаказ
Средняя оценка 0.0 из 5 на основании 0 голосов
JavaScript Advanced - продвинутые концепции языка и ООП
Продвинутый JavaScript
Постер товара: Полный курс по Javascript (включает 80 задач)
Скидка 78%
Предзаказ
Средняя оценка 0.0 из 5 на основании 0 голосов
Полный курс по Javascript (включает 80 задач)
JavaScript
Постер товара: Javascript. Интенсивный курс для программистов
Скидка 91%
Предзаказ
Средняя оценка 5.0 из 5 на основании 1 голосов
Javascript. Интенсивный курс для программистов
JavaScript
Постер товара: Асинхронный Python
Скидка 71%
Предзаказ
Средняя оценка 0.0 из 5 на основании 0 голосов
Асинхронный Python
Асинхронный Python
Постер товара: Современный JavaScript с нуля до Junior специалиста
Скидка 75%
Предзаказ
Средняя оценка 0.0 из 5 на основании 0 голосов
Современный JavaScript с нуля до Junior специалиста
JavaScript
Постер товара: JavaScript. Стань Senior Frontend разработчиком
Скидка 85%
Предзаказ
Средняя оценка 0.0 из 5 на основании 0 голосов
JavaScript. Стань Senior Frontend разработчиком
JavaScript
Постер товара: Асинхронное программирование на Python для джуниор-разработчиков
Скидка 87%
Предзаказ
Средняя оценка 0.0 из 5 на основании 0 голосов
Асинхронное программирование на Python для джуниор-разработчиков
Асинхронный Python
Постер товара: Фундаментальный JavaScript. С практикой и проектами
Скидка 68%
Предзаказ
Средняя оценка 0.0 из 5 на основании 0 голосов
Фундаментальный JavaScript. С практикой и проектами
JavaScript