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

Bot

Администратор
Команда форума
23 Янв 2020
188,612
3,065
113
269049.jpg

Контракты асинхронности на базе 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