Asynchrone Programmierung (vollständiger Kurs)

Asynchrone Programmierung (vollständiger Kurs)

Asynchrones Programmieren hat sich in letzter Zeit ebenso stark entwickelt wie die klassische parallele Programmierung, und im Bereich JavaScript, sowohl in Browsern als auch in Node.js, hat das Verständnis seiner Techniken eine zentrale Rolle in der Denkweise der Entwickler eingenommen. Ich präsentiere Ihnen einen umfassenden und vollständigen Kurs, der alle weit verbreiteten Methoden des asynchronen Programmierens, Adapter zwischen diesen und unterstützende Konzepte erklärt. Der Kurs besteht derzeit aus 23 Vorlesungen, 3 Vorträgen und 28 Repositories mit zahlreichen Codebeispielen auf GitHub. Insgesamt etwa 17 Stunden Video: Link zur Wiedergabeliste.

Erläuterungen zum Diagramm

Im Diagramm (oben) werden die Verbindungen zwischen den verschiedenen Methoden der Arbeit mit Asynchronität dargestellt. Die farbigen Blöcke beziehen sich auf asynchrones Programmieren, während Schwarz-Weiß-Methoden des parallelen Programmierens (Semaphore, Mutex, Barrieren usw.) und Petrinetze dargestellt werden, die, wie asynchrones Programmieren und das Actor-Modell, unterschiedliche Ansätze zur Implementierung paralleler Berechnungen sind (sie dienen im Diagramm nur dazu, den Platz des asynchronen Programmierens genauer zu bestimmen). Das Actor-Modell steht in Verbindung mit asynchronem Programmieren, da die Implementierung von Akteuren ohne Multithreading ebenfalls legitim ist und zur Strukturierung von asynchronem Code dient. Die gestrichelten Linien verbinden Ereignisse und die konkurrierende Warteschlange mit Callbacks, da diese Abstraktionen auf Callbacks basieren, dennoch jedoch qualitativ neue Ansätze bilden.

Themen der Vorlesungen

1. Asynchrones Programmieren (Überblick)
2. Timer, Timeouts und EventEmitter
3. Asynchrones Programmieren mit Callbacks
4. Nicht blockierende asynchrone Iteration
5. Асинхронность с библиотекой async.js
6. Asynchronität mit Promises
7. Asynchrone Funktionen und Fehlerbehandlung
8. Asynchrone Adapter: promisify, callbackify, asyncify
9. Asynchrone Datensammler
10. Unbehandelte Fehler in Promises
11. Das Problem des asynchronen Stacktrace
12. Generatoren und asynchrone Generatoren
13. Iteratoren und asynchrone Iteratoren
14. Abbrechen asynchroner Operationen
15. Asynchrone Funktionskomposition
16. Thenable und leichtgewichtige await
17. Konkurrenzsichere asynchrone Warteschlange
18. Muster Offener Konstruktor (Revealing Constructor)
19. Future: Asynchronität mit zustandslosen Futures
20. Deferred: Asynchronität mit zustandsbehafteten Deferrern
21. Actor-Modell (Actor Model)
22. Beobachter-Muster (Observer + Observable)
23. Asynchronität mit RxJS und Ereignisströme

Unter jedem Video finden Sie Links zu Repositories mit Codebeispielen, die im Video behandelt werden. Ich habe versucht zu zeigen, dass man nicht alles auf eine Abstraktion der Asynchronität reduzieren sollte. Es gibt keinen universellen Ansatz zur Asynchronität, und für jeden Fall können die Methoden ausgewählt werden, die es ermöglichen, den Code auf natürliche Weise für die jeweilige Aufgabe zu schreiben. Natürlich wird dieser Kurs ergänzt, und ich bitte alle, neue Themen vorzuschlagen und zu den Codebeispielen beizutragen. Das Hauptziel des Kurses ist es, zu zeigen, wie man Abstraktionen der Asynchronität von innen aufbaut, und nicht nur zu lernen, wie man sie benutzt. Praktisch alle Abstraktionen stammen nicht aus Bibliotheken, sondern werden in ihrer einfachsten Implementierung gegeben und schrittweise ihre Funktionsweise erläutert.

Nur registrierte Benutzer können an der Umfrage teilnehmen. Bitte einloggen.

Wie stehen Sie zu dem Kurs?

  • Ich werde den gesamten Kurs ansehen

  • Ich werde ihn selektiv ansehen

  • Ein Ansatz reicht mir

  • Ich werde zum Kurs beitragen

  • Ich interessiere mich nicht für Asynchronität

8 Benutzer haben abgestimmt. 1 Benutzer hat sich enthalten.

Quelle: habr.com

60GB SSD 8Gb DDR4