раздел 05
Асинхронность
Карта async-примитивов: гранулярность, поток, владение состоянием.
Начать раздел
Хочу пройти
Не получилось изменить список. Попробуй ещё раз.
Без входа у каждого урока видно начало. Войди, чтобы читать целиком, отмечать пройденное и решать задачи. войти
Уроки раздела
- Оси асинхронности · гранулярность
- Колбеки и event loop
- Promise, thenable и async/await
- Асинхронная синхронность · машинерия async/await
- События, сигналы и AbortController
- Стримы, async iterators и pipelines
- Ошибки, async stack trace и graceful shutdown
- Конкурентность и параллелизм
- Оси асинхронности · поток, ошибки, владение, жадность
- Инструменты конкурентности · очереди, семафоры, гонки
- Контекст и модели: AsyncLocalStorage, акторы, STM, Effect
Понятия курса
Понятия разобраны внутри уроков. Нажми на понятие, чтобы открыть урок, где оно объясняется.
Ментальная модель
- Concurrent vs Parallel vs AsyncAsync: модель программирования, concurrent: структура программы, parallel: execution. Ортогональные оси.урок 8 · Конкурентность и параллелизмопираются: урок 9, урок 10, урок 11
Оси классификации
- Гранулярность результатаCallback / Promise / async iter / unbounded iter. Какую обвязку выбираешь.урок 1 · Оси асинхронности · гранулярностьопираются: урок 2, урок 8, урок 9
- Eagerness: eager vs lazyPromise eager, Task lazy. Композиция через монадический pipe.урок 9 · Оси асинхронности · поток, ошибки, владение, жадность
- Flow: control vs eventasync/await vs EventEmitter/Stream. Push vs pull.урок 9 · Оси асинхронности · поток, ошибки, владение, жадность
- Propagation: push, pull, hybridStreams и async queues: гибридные. RxJS, MessageChannel, BroadcastChannel.урок 9 · Оси асинхронности · поток, ошибки, владение, жадность
- State ownershipExclusive / shared (Mutex, Semaphore, AsyncPool) / isolated (actors, workers) / cooperative / transactional.урок 9 · Оси асинхронности · поток, ошибки, владение, жадность
Обязательная база
- Адаптеры: callbackify, promisifyПеревод между моделями (callback ↔ promise ↔ async).урок 10 · Инструменты конкурентности · очереди, семафоры, гонки
- Множественный resolve/rejectСпецификация игнорирует повторные вызовы. Как ловить логические дубли, unhandledRejection, leaky promise.урок 3 · Promise, thenable и async/await
- Callback-first кодCallback-last-error-first соглашение. Композиция и callback hell.урок 2 · Колбеки и event loopопираются: урок 3
- Event loop в V8/NodeФазы, micro/macro tasks, process.nextTick, setImmediate. Что блокирует, что нет.урок 2 · Колбеки и event loopопираются: урок 3, урок 8
- Promise + async/awaitthen/catch/finally, all/allSettled/race/any. Раскрытие async в промисы.урок 3 · Promise, thenable и async/awaitопираются: урок 4, урок 5, урок 6, урок 7, урок 10, урок 11
- Async generators / iteratorsfunction*, yield, for await...of. Pull-модель async.урок 6 · Стримы, async iterators и pipelines
- Cancellation: AbortController/SignalCooperative cancel. Где обязательно, где про`забывают`.урок 7 · Ошибки, async stack trace и graceful shutdown
- Chain of Responsibility / middlewarePipeline-композиция (и где это антипаттерн).урок 6 · Стримы, async iterators и pipelines
- EventEmitter, EventTarget, ObserverКонтракты на основе событий.урок 5 · События, сигналы и AbortControllerопираются: урок 6
- return await и проксирование промисовЗачем return await внутри try/catch, без try/catch разрешено возвращать сам промис, влияние на stack traces.урок 3 · Promise, thenable и async/await
- Signals (TC39)signal, computed, effect: будущее реактивности в стандарте.урок 5 · События, сигналы и AbortController
- Streams и backpressureReadable/Writable/Transform, backpressure, Revealing Constructor, Web Streams.урок 6 · Стримы, async iterators и pipelines
- ThenableПромисо-подобный интерфейс. Lightweight await.урок 3 · Promise, thenable и async/await
- AsyncLocalStorage / AsyncResourceКонтекст запроса через цепочку async вызовов.урок 11 · Контекст и модели: AsyncLocalStorage, акторы, STM, Effect
- AsyncQueue / AsyncPool / AsyncCollectorCircular buffer, object pool / worker thread pool, сбор значений до готовности.урок 10 · Инструменты конкурентности · очереди, семафоры, гонки
- Race conditions: data vs controlГде они появляются и как предотвращать.урок 10 · Инструменты конкурентности · очереди, семафоры, гонки
- RxJS: реактивные потокиOperator chains. Когда RxJS: это правильное решение.урок 10 · Инструменты конкурентности · очереди, семафоры, гонки
- Sync primitives: Mutex, Semaphore, LockWeb Locks API, Spin Lock. Когда они нужны в JS.урок 10 · Инструменты конкурентности · очереди, семафоры, гонки
- Worker Threads, Atomics, SharedArrayBufferMessageChannel, BroadcastChannel. CAS-операции.урок 10 · Инструменты конкурентности · очереди, семафоры, гонки
- Effect systems для asyncfp-ts (Task, TaskEither, RTE), Effect.ts (Effect<A,E,R>), algebraic effects.урок 11 · Контекст и модели: AsyncLocalStorage, акторы, STM, Effect
Машинерия
- Свой Promise по Promises/A+Скелет состояний и трансиций, queueMicrotask для then-колбеков, идемпотентный resolve, thenable resolution procedure.урок 4 · Асинхронная синхронность · машинерия async/await
- Сопрограммы и mini-coГенератор как сопрограмма: yield ставит на паузу, runner проходит yield-ы и резолвит промисы. Прародитель async/await.урок 4 · Асинхронная синхронность · машинерия async/await
- async/await как state machineДесугар async-функции в FSM: переменная состояния, then-обёртки на каждый await, локальные переменные превращаются в поля.урок 4 · Асинхронная синхронность · машинерия async/await
- Top-level await и async-модулиTLA в ESM: модуль становится async, импортёр ждёт его инициализации. Не работает в CJS. Циклы зависимостей дают deadlock.урок 4 · Асинхронная синхронность · машинерия async/await
Продвинутое
- История промисов и BluebirdjQuery deferred, Q, Bluebird, нативные Promise. Где Bluebird ещё жив (Sequelize, старый Knex) и почему вытеснили.урок 3 · Promise, thenable и async/await
- Actor ModelActor = независимая сущность с message passing. Erlang/Elixir, Akka, Orleans. Workers + comlink в JS.урок 11 · Контекст и модели: AsyncLocalStorage, акторы, STM, Effect
- BEAM: рантайм ErlangЛёгкие процессы с изолированной кучей, вытесняющая многозадачность через подсчёт редукций, по планировщику на каждое ядро. Фундамент под акторы и отказоустойчивость в Erlang, Elixir и Gleam.урок 11 · Контекст и модели: AsyncLocalStorage, акторы, STM, Effect
- STM: Software Transactional MemoryОптимистичный конкурентный контроль. Haskell STM, Clojure refs, Effect TRef/TQueue.урок 11 · Контекст и модели: AsyncLocalStorage, акторы, STM, Effect