- PVSM.RU - https://www.pvsm.ru -

Асинхронное программирование (полный курс)

Методы асинхронного программирования [1]

Асинхронное программирование за последнее время стало не менее развитым направлением, чем классическое параллельное программирование, а в мире JavaSript, как в браузерах, так и в Node.js, понимание его приемов заняло одно из центральных мест в формировании мировоззрения разработчиков. Предлагаю вашему вниманию целостный и наиболее полный курс с объяснением всех широко распространенных методов асинхронного программирования, адаптеров между ними и вспомогательных проемов. Сейчас он состоит из 23 лекций, 3 докладов и 28 репозиториев с множеством примеров кода на github. Всего около 17 часов видео: ссылка на плейлист [1].

Пояснения к схеме

На схеме (выше) показаны связи между разными способами работы с асинхронностью. Цветные блоки относятся к асинхронному программированию, а ч/б показаны методы параллельного программирования (семафоры, мьютексы, барьеры и т.д.) и сети петри, которые, как и асинхронное программирование и модель акторов, являются разными подходами к реализации параллельных вычислений (они даны на схеме только чтоб точнее определить место асинхронного программирования). Модель акторов связана с асинхронным программированием потому, что реализация акторов без многопоточности тоже имеет право на существование и служит для структурирования асинхронного кода. Пунктирными линиями события и конкурентная очередь связаны с колбеками потому, что эти абстракции базируются на колбеках, но все же формируют качественно новые подходы.

Темы лекций

1. Асинхронное программирование (обзор) [2]
2. Таймеры, таймауты и EventEmitter [3]
3. Асинхронное программирование на callback`ах [4]
4. Неблокирующее асинхронное итерирование [5]
5. Асинхронность с библиотекой async.js [6]
6. Асинхронность на промисах [7]
7. Асинхронные функции и обработка ошибок [8]
8. Асинхронные адаптеры: promisify, callbackify, asyncify [9]
9. Асинхронные коллекторы данных [10]
10. Необработанные ошибки в промисах [11]
11. Проблема асинхронного стектрейса [12]
12. Генераторы и асинхронные генераторы [13]
13. Итераторы и асинхронные итераторы [14]
14. Отмена асинхронных операций [15]
15. Асинхронная композиция функций [16]
16. Thenable и легковесный await [17]
17. Конкурентная асинхронная очередь [18]
18. Паттерн открытый конструктор (Revealing Constructor) [19]
19. Future: Асинхронность на фьючерах без состояния [20]
20. Deferred: Асинхронность на диферах с состоянием [21]
21. Модель акторов (Actor Model) [22]
22. Паттерн Наблюдатель (Observer + Observable) [23]
23. Асинхронность на RxJS и потоки событий [24]

Под каждым видео есть ссылки на репозитории с примерами кода, которые разбираются в видео. Я постарался показать, что не нужно сводить все к одной абстракции асинхронности. Универсального подхода к асинхронности не существует, а для каждого случая можно подобрать те методы, которые позволят писать код более естественно для этой конкретной задачи. Конечно же, этот курс будут дополняться и я прошу всех предлагать новые темы и контрибьютить в примеры кода. Основная задача курса — это показать как строить абстракции асинхронности изнутри, а не просто научить ими пользоваться. Практически все абстракции не берутся из библиотек, а даны в самой простой их реализации и пошагово разобрана их работа.

Автор: MarcusAurelius

Источник [25]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/javascript/318475

Ссылки в тексте:

[1] Image: https://www.youtube.com/playlist?list=PLHhi8ymDMrQZ0MpTsmi54OkjTbo0cjU1T

[2] 1. Асинхронное программирование (обзор): https://youtu.be/hY6Z6qNYzmc

[3] 2. Таймеры, таймауты и EventEmitter: https://youtu.be/LK2jveAnRNg

[4] 3. Асинхронное программирование на callback`ах: https://youtu.be/z8Hg6zgi3yQ

[5] 4. Неблокирующее асинхронное итерирование: https://youtu.be/wYA2cIRYLoA

[6] 5. Асинхронность с библиотекой async.js: https://youtu.be/XQ94wQc-erU

[7] 6. Асинхронность на промисах: https://youtu.be/RMl4r6s1Y8M

[8] 7. Асинхронные функции и обработка ошибок: https://youtu.be/Jdf_tZuJbHI

[9] 8. Асинхронные адаптеры: promisify, callbackify, asyncify: https://youtu.be/76k6_YkYRmU

[10] 9. Асинхронные коллекторы данных: https://youtu.be/tgodt1JL6II

[11] 10. Необработанные ошибки в промисах: https://youtu.be/1Ml5NE2fsZ8

[12] 11. Проблема асинхронного стектрейса: https://youtu.be/pfiHTx3j87Y

[13] 12. Генераторы и асинхронные генераторы: https://youtu.be/kvNm9D32s8s

[14] 13. Итераторы и асинхронные итераторы: https://youtu.be/rBGFlWpVpGs

[15] 14. Отмена асинхронных операций: https://youtu.be/T8fXlnqI4Ws

[16] 15. Асинхронная композиция функций: https://youtu.be/3ZCrMlMpOrM

[17] 16. Thenable и легковесный await: https://youtu.be/DXp__1VNIvI

[18] 17. Конкурентная асинхронная очередь: https://youtu.be/Lg46AH8wFvg

[19] 18. Паттерн открытый конструктор (Revealing Constructor): https://youtu.be/leR5sXRkuJI

[20] 19. Future: Асинхронность на фьючерах без состояния: https://youtu.be/22ONv3AGXdk

[21] 20. Deferred: Асинхронность на диферах с состоянием: https://youtu.be/a2fVA1o-ovM

[22] 21. Модель акторов (Actor Model): https://youtu.be/xp5MVKEqxY4

[23] 22. Паттерн Наблюдатель (Observer + Observable): https://youtu.be/_bFXuLcXoXg

[24] 23. Асинхронность на RxJS и потоки событий: https://youtu.be/0kcpMAl-wfE

[25] Источник: https://habr.com/ru/post/452974/?utm_campaign=452974