JavaScript: Asynchrone Programmierung

Kontrollfluss mit Thunks

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Thunks verändern Kontrollflussproblematiken von Callbacks nur geringfügig und leiden unter den gleichen Grundproblemen.

Transkript

Thunks stellen zwar eine Verbesserung des herkömmlichen Callback Mechanismus dar, in diesem Video werde ich Ihnen allerdings beweisen, dass die Steuerung des Kontrollflusses, und damit die Komplexität einer echt parallelen Anwendungsentwicklung, sich nicht verbessert. In meiner IDE erstelle ich nun zunächst eine Datei mit der Bezeichnung: 02_control_flow.js. Ich benötige hier die Funktion buildThunk, und außerdem den Import der Bibliothek request, mit Hilfe der Funktion require auf request. Ich kann nun also buildThunk nutzen, um Aufrufe von request zu kapseln. Beispielsweise, um mir die Zahl 3 von der API httpbin herunterzuladen, verwende ich die Möglichkeiten von buildThunk auf request, mit dem Argument, request 3 auf der httpbin API. Das Ganze kann man nun auch für 4 und 5 mit entsprechender Parametrisierung, innerhalb eines Thunks kapseln. Außerdem empfiehlt es sich nun eine zentrale Funktion für das Loggen des Wertes zu erstellen, beispielsweise die Funktion logRequest, die also einen Fehler, die incoming message, als auch den body entgegen nimmt, und mit Hilfe von JSON.parse den body ausliest, und das Ganze auf die Konsole schreibt. Dank der Thunks, kann ich nun mit get3, logRequest, get4, logRequest, und get5, logRequest, das Ganze in übersichtlicher Art und Weise ausführen. Sollte sich an dieser Stelle herausstellen, dass Sie das Paket request noch nicht heruntergeladen haben, so denken Sie immer daran, mit Hilfe der Funktion npm init, zunächst einmal eine Projektbeschreibung zu erstellen, und dann mit Hilfe von npm install, save und request, die Bibliothek in Ihrem Projekt zu installieren. Dann sollte auch ein solcher Aufruf kein Problem mehr darstellen. Wenn auch es so wirken mag, garantieren uns allerdings diese Aufrufe, nicht die Reihenfolge. Aus diesem Grund muss für eine korrekte Abfolge, beispielsweise zuerst 3, dann 4, dann 5, nach wie vor auf eine Callback Syntax zurückgegriffen werden, die alle Aufrufe, in Folge startet. In meinem Beispiel also, bei der Funktion get5, kann ich logRequest direkt übergeben. Für alle anderen Aufrufe, nutze ich logRequest.apply, für den Kontext null, und die Argumente meiner aktuellen Funktion. Damit ist nun also sichergestellt, dass die Abfolge von 3, 4 und 5, immer garantiert ist. Mit Hilfe von Thunks, haben wir es also nun geschafft, die Komplexitäten des API Aufrufes von requests zu verstecken, allerdings haben wir nach wie vor die Problematik mit tieferen Callback Strukturen in unserem Kontrollfluss. Sie haben nun gesehen, dass ähnlich wie bei Callbacks, die geschachtelte Ausführung, einen gesteuerten Kontrollfluss bedeutet. Nichtsdestotrotz wird bei Nebenläufigkeit, also der parallelen Ausführung solch asynchroner Aufgaben, immer ein gewisser Kontrollverlust stattfinden. Nichtsdestotrotz haben Thunks den Vorteil, dass sie üblicherweise keine unerwünschten Nebeneffekte erzeugen können.

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!