Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

JavaScript: Asynchrone Programmierung

Das Promise

Testen Sie unsere 2019 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Ein Promise zu konstruieren bedarf einer bestimmten Konvention, die in diesem Video erläutert wird.

Transkript

Das Promise ist der defacto Standard für asynchrone Programmierung in JavaScript. Und mittlerweise hat es Callbacks in den meisten JavaScript Bibliotheken abgelöst. In diesem Video beschäftigen wir uns mit dem Konzept hinter einem Promise, und erzeugen unser erstes Promise, mit Hilfe eines einfachen Beispiels. In meiner IDE beginne ich also nun damit, dass ich in meinem Terminal, den Befehl npm init benutze. Ich erzeuge also eine Projektbeschreibung für mein Projekt Promise. Je nach NodeJS Version, sollte ich nun die Bibliothek, mit dem Namen babel-polyfill installieren. Der Grund dafür ist, dass Promises, also die Implementierung eines Promise, mittlerweile JavaScript Standard geworden sind, aber nicht unbedingt in jeder JavaScript Version zur Verfügung stehen. Mit Hilfe von babel-polyfill, kann ich garantieren, dass ich, sowohl im Browser, als auch in NodeJS, immer die Klasse Promise zur Verfügung habe. Auch wenn es in meinem Fall nicht nötig ist, kann es nicht schaden mit require, babel-polyfill, sicherzustellen, dass das Promise Objekt zur Verfügung steht. Und wie erzeuge ich nun ein solches Promise Objekt? Indem ich einfach eine Variable definiere, in meinem Fall mit der Bezeichnung Promise, die eine Instanz erzeugt von der Klasse Promise. Jedoch hat die Instanziierung einen Parameter, dieser ist eine Funktion, die genau zwei Argumente nimmt: resolve und reject. Innerhalb dieser Funktion ist es nun an mir festzulegen, dieses Promise aufzulösen. Beispielsweise mit dem Inhalt des Textes Hello World. Wie der Name bereits sagt, ist ein Promise ein Versprechen. Ein Versprechen dass ich in Zukunft einen Wert aus dem Promise erhalten werde. Diesen Wert abrufen kann ich nun mit einer Funktion mit der Bezeichnung then. Diese nimmt nun als Parameter einen Text entgegen, und gibt diesen auf die Konsole aus. Wenn ich das Ganze starte, sehe ich auf der Konsole: Hello World. Was ist nun so besonders an diesem Konstrukt? Ich benutze hier eine homogene API, um aus diesem Promise meinen Wert zu erhalten. Mit Hilfe der Funktion then. Diesen Wert kann ich nun irgendwann in der Zukunft bekommen, oder auch sofort. Das heißt, Problematiken von Asynchronität sind für mich nicht direkt ersichtlich. Außerdem wird mir garantiert von diesem Promise, dass ich einen Wert in Zukunft bekommen werde. Das bedeutet, dass der Implementierer dieses Promises, entweder die resolve Funktion oder die reject Funktion mindestens nutzen muss. Wenn er nun die resolve Funktion beispielsweise zweimal nutzt, so muss sichergestellt sein, dass meine Callback Funktion hier, nicht noch einmal aufgerufen wird, um mir entsprechende Garantien zu geben. Wenn ich also meine Anwendung unter diesem Aspekt noch einmal starte, bekomme ich trotzdem nur die Ausgabe: Hello World. Ein zweiter Aufruf auf resolve schlägt also automatisch fehl. Bilde ich nun also Asynchronität ab, beispielsweise mit der setTimeout Funktion beispielsweise nach einer Sekunde, und dem Aufruf von resolve Hello World, so bleibt für mich die Nutzung dieses Versprechens, also des Promises, immer gleich. Ähnlich wie das Konzept des Thunks, verbirgt das Promise vor mir den Weg bis zum Ergebnis des Rückgabewertes, wie in diesem Fall, des Textes. Als Nutzer dieses Promises, muss ich mich lediglich darum kümmern, den Wert entgegenzunehmen und weiterzuverarbeiten. Anhand dieses einfachen Beispiels, konnten wir also nun nachvollziehen, dass das Promise den Konzepten eines Thunks unterliegt. Dabei wird uns quasi der zukünftige Ausgang eines Vorgangs versprochen. Wir benutzen also eine Variable, wie in unserem Fall promise, kleingeschriben, die ähnlich wie in anderen Programmiersprachen, das Future oder das Completion Event, definiert, dass es in Zukunft einen Rückgabewert geben wird. Dieser Rückgabewert stoßt entweder automatisch einen Folgevorgang, wie beispielsweise in unserem Fall das Loggen auf die Konsole, oder einen Fehler an. Außerdem gibt uns diese API eine sehr wichtige Garantie, und zwar, dass der Ablauf unserer Folgefunktion einmalig ist.

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!