JavaScript: Asynchrone Programmierung

Channels

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Channels, bekannt aus Programmiersprachen wie Clojure und Go, dienen als Abstraktion zwischen verschiedenen Programmabschnitten, die parallel ohne Nebeneffekte ablaufen können.

Transkript

Channel sind ein Programmierkonstrukt, die vor allem in Programmiersprachen wie Clojure oder Go sehr beliebt sind, um parallelisierte Verarbeitung von Daten problembefreit abbilden zu können. In diesem Video werden wir uns mit dem Konzept von Channeln auseinandersetzen, und auf Basis der Async und Await Syntax in JavaScript umsetzen. Dafür installiere ich zunächst einmal in meinem Projekt mit dem Befehl npm install, Minus, Minus, save, das Package, async-csp. CSP steht dabei für Communicatal Sequencial Processes. Ich erstelle eine Datei mit der Bezeichnung 03_channels.js. Meine Start JS passe ich auf 03_channels.js an. Die zentrale Klasse hier ist der Channel, aus dem Package async-csp. Ich kann nun beispielsweise einen solchen Channel initialisieren, über new Channel. Da Channel grundsätzlich asynchron zu verwenden sind, definiere ich eine Funktion async function putOnChannel, in der ich diesen Channel benutze, mit der Funktion put, Hello, und put, World. Allerdings muss ich diese Aufrufe abwarten mit der await Syntax. Passend dazu, definiere ich mir eine Funktion takeFromChannel, die auf die Konsole ausgibt, was sie vom Channel abholt. In beiden Fällen stelle ich ein await voran. Wenn ich beides definiert habe, kann ich nun mit Aufruf von putOnChannel, und takeFromChannel, den Kontrollfluss starten. Die Besonderheit an solchen Channels ist nun also, dass ich von zwei verschieden Orten innerhalb meines Codes, über den Channel miteinander kommunizieren kann. Bedingt dadurch, dass hier nur Variablen versendet werden, habe ich eine sogenannte shared-nothing Architektur, da ich keine Möglichkeiten habe, innerhalb des Scopes dieses Channels, auf den Scope dieses Channels zuzugreifen. Wenn ich mir nun noch eine Hilfsfunktion sleep definiere, die basierend auf einem Promise erst in der Zukunft ausgelöst wird, (tippt) (tippt) kann ich nun über meinen Channel auch einen Stau verursachen. Indem ich beispielsweise, an einer bestimmten Stelle für drei Sekunden warte, und maximal einen Rückstau von bis zu einer Nachricht zulasse. Wie man also nun sehen konnte, hat es drei Sekunden gedauert, bis tatsächlich vom Channel der Wert World entgegengenommen wurde, und hier an der Stelle abgeholt wurde und in die Konsole ausgegeben werden konnte. Mit Hilfe von Channels kann man auch einige Datenverarbeitungen anstoßen. Beispielsweise könnte ich mir einen zweiten Channel erzeugen, (tippt) der Strings entgegennimmt und in lower case umwandelt. (tippt) Dafür muss ich zusätzlich aus meinem ersten Channel, mit der Funktion pipe, alle Nachrichten an meinen zweiten Channel weiterleiten. Das Konzept von Channels eignet sich also, wie in Programmiersprachen Clojure oder Go, dafür um echte Concurrency abzubilden. Also eine sogenannte share-nothing Architektur. Dabei muss man sich also nicht damit auseinandersetzen, welche Variablen an welchen Punkten im Spiel sind, sondern lediglich durch die Kommunikation via Nachrichten ist es möglich Daten an verschiedenen Stellen des Codes zu verarbeiten.

JavaScript: Asynchrone Programmierung

Lernen Sie Lösungen für die komplexe Anwendungsentwicklung kennen, um zeitaufwändige Ressourcenzugriife im Code zu vermeiden.

2 Std. 30 min (19 Videos)
Derzeit sind keine Feedbacks vorhanden...
Software:
Exklusiv für Abo-Kunden
Erscheinungsdatum:22.08.2016

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!