Асинхронное программирование [Тимур Шемсединов]

Bot

Администратор
Команда форума
23 Янв 2020
187,112
3,060
113
269049.jpg

1. Асинхронные контракты на основе обратного вызова
Контракты Callback и Callback-last-error-first
Примеры кода
Задания по колбекам и созвоны с разбором заданий
Функции высшего порядка, колбеки, события в JavaScript
Асинхронное программирование на основе callback`ов в JavaScript
V8: оптимизация возврата из функции в JavaScript с помощью return, resolve, callback — Деми Мурыч
1. Минимально необходимое понимание рантайма: цикл обработки событий, ввод-вывод, таймеры
Фазы цикла обработки событий в V8 и Node.js
Стрим с разбором цикла событий и асинхронности
Примеры кода
Задания по таймерам
Цикл событий, асинхронность, таймеры, колбеки, промисы, async/await
Асинхронное программирование на JavaScript и Node.js: обратный вызов, промис, thenable, async/await

2. Паттерны: актёр, реактор, проактор
Композиция актора и состояния (композиция актора и состояния)
Паттерн Reactor (реактор): как устроен цикл обработки событий в Node.js
Паттерн Proactor
Семинар «Шаблоны проектирования: актор, реактор, проактор для JavaScript и TypeScript»

1. Контракты на основе событий
События: EventTarget, EventEmitter
Наблюдатель паттерна GoF
Примеры кода для событий
Задания по событиям
EventEmitter из старой лекции
Примеры кода из старой лекции по EventEmitter
Проверка кода: Observable, EventEmitter, EventTarget

1. Абстракция потоков Stream
Потоки Readable, Writable, Transform, открытый конструктор, буферизация, противодавление
Web Streams — браузерное API для потоков событий
Примеры кода
Паттерн открытый конструктор (Revealing Constructor
Примеры кода
Потоки (Streams) в Node.js
HTTP-сервер на Node.js, req, res, сокеты и потоки (streams)

3. Контракт Thenable
Контракт Thenabe
Тогдабл из старой лекции
Удобный и лёгкий в использовании await
Примеры кода
Задания по Thenabe и созвон с разбором заданий

1. Контракт Promise
Обещание: then/catch/finally и методы класса all, allSettled, race, any
Асинхронность на промисах из старой лекции
Примеры кода
Задания по Promise и созвон с разбором заданий

1. Контракт асинхронных функций async/await
Асинхронные функции
Асинхронные функции из старой лекции
Примеры кода
Задания по async/await

1. Контракт сигналов Signals
Сигналы: сигнал, вычисление, эффект
Примеры кода
Задания по сигналам
Обработка ошибок, их выявление и решение проблем с помощью стектрейса
Обработка ошибок, логирование и агрегирование
Семинар: ошибки, исключения, операционные, программные, аппаратные, восстановление, логирование
Реализация Graceful shutdown в Node.js, unhandled exceptions async stack trace

1. Обработка ошибок из старой лекции
Примеры кода
Задания по обработке ошибок

2. Асинхронная очередь AsyncQueue
Семинар: асинхронная очередь — AsyncQueue, ConcurrentQueue
Очередь Node. js, оптимизированная для JavaScript V8: кольцевой буфер, развёрнутый список, развёрнутая очередь
Конкурентная асинхронная очередь из старой лекции
Примеры кода

2. Асинхронный пул AsyncPool
Паттерн Factory Method
Паттерны: пул объектов, фабрика
Асинхронный Pool
Семинар: конструктор, фабрика, фабричный метод, пул объектов
Асинхронный пул для рабочих потоков в Node.js
Фабрики и пулы объектов в JavaScript, factorify, poolify
Примеры кода

2. Асинхронная коллекция Collector
Асинхронные коллекции (собираем значения по мере готовности)
Асинхронные сборщики данных
Примеры кода

2. Схема «цепочка ответственности»
Схема: цепочка ответственности
Примеры кода

2. Конвертеры контрактов asyncify, callbackify, стыковка кода в разных стилях
Шаблоны GoF: адаптер
Асинхронные адаптеры
Семинар по адаптерам для Node. js и асинхронному программированию
Ревью кода Node. js promisify — Тимур Шемсединов и Деми Мурч
Асинхронные адаптеры из старой лекции
Примеры кода

2. Предотвращение состояния гонки при работе с данными и управлении в асинхронном коде

2. Отмена асинхронных операций
AbortController, AbortSignal
Примеры кода

2. Async Generator и Async Iterator
Генератор, итератор, итерируемый объект
Асинхронный генератор, асинхронный итератор, асинхронная итерируемость
Генераторы и асинхронные генераторы из старой лекции
Итераторы и асинхронные итераторы из старой лекции
Примеры кода

3. Абстракции, перенесённые из параллельного программирования в асинхронное
Семафоры и мьютексы в JavaScript и Node.js
Асинхронные абстракции: Semaphore, Mutex
Блокировка API WebLocks
Блокировки Lock, Spin Lock

3. Абстракции параллельного программирования: процессы и потоки
Многопоточность в Node.js
API веб-замков в Node. js и браузере
Потоки и процессы в JavaScript, асинхронное и параллельное программирование на Node. js и в браузере
Потоки и процессы на украинском языке для Web и Node.js, атомарные операции/CAS, разделяемая память, блокировка
Межпроцессное взаимодействие в Node.js
Межпроцессное и межпотоковое взаимодействие, MessageChannel BroadcastChannel
Корутины coroutines

4. Асинхронная композиция compose callbacks & async compose
Асинхронная композиция: compose, pipe — функциональное программирование
Асинхронная композиция функций
Примеры кода

4. Асинхронность на основе потоков событий RxJS
Асинхронность на RxJS из старой лекции
Примеры кода

4. Модель акторов actor model
Модель акторов
Примеры кода

4. Функциональное асинхронное программирование, контракт Future
Асинхронный шаблон FP — будущее
Асинхронность на фьючерсах без сохранения состояния
Примеры кода

5. Асинхронность на синхронных генераторах function*/yield

5. Мидлвары middleware как антипаттерн
Промежуточное ПО Node. js — больше никогда!
Примеры кода

5. Семейство контрактов Deferred
Отложенный: асинхронность на отложенных объектах с состоянием
Примеры кода

5. Async.js
Код Легаси в библиотеке Async.js
Примеры кода

5. Коллекция асинхронных абстракций Metasync

3. Отслеживание асинхронных контекстов
AsyncLocalStorage, AsyncResource
Примеры использования AsyncLocalStorage и AsyncResource

Принципы и шаблоны с адаптацией для JavaScript, TypeScript, Node. js и асинхронного программирования
Принципы SOLID
Паттерны GRASP
Контрактное программирование