In dieser Vorlesung und der folgenden Übung
werden wir speziell über Callback Hell sprechen.
Das Problem, das auftritt, wenn Sie
Callbacks in Knoten und insbesondere verschachtelte Callbacks und Knoten schreiben.
Wir werden auch Versprechen als eine Möglichkeit betrachten, das Callback Hell Problem zu beheben.
Um Ihnen eine Vorstellung davon zu geben, was das typische Callback Hell Problem verursachen wird,
besuchen wir die Datei index.js aus der vorherigen Übung erneut.
Wie ich in der vorherigen Übung darüber gesprochen habe
, bemerken Sie, dass für jede der Operationen, die wir ausführen,
die nachfolgende Operation in der Callback-Funktion enthalten ist
und so weiter, bis Sie eine Pyramidenähnliche Struktur wieder bilden.
Sie sehen also diese pyramidenähnliche Struktur, die in Ihrem Code entsteht.
Stellen Sie sich nun vor, dass Sie mehrere verschachtelte Operationen wie diese ausführen müssen,
wird Ihr Code ziemlich bald,
sehr komplex und nicht so einfach zu entziffern.
Nun, das ist, was in der node.js Welt,
sie als Callback Hell bezeichnet.
Es gab mehrere Möglichkeiten, das auftretende Problem zu mildern.
Jetzt können Sie dies vollständig vermeiden
, da Sie bestimmte Operationen haben, die
abgeschlossen werden müssen, bevor der nächste Vorgang initiiert werden kann,
aber wir können den Code so neu anordnen, dass dieses Problem gemildert wird.
Versprechungen sind eine solche Möglichkeit, dies anzugehen.
Also, um zusammenzufassen, was wir gerade diskutiert haben,
stark verschachtelter Callback-Code,
verursacht das Callback Hell Problem und es
resultiert aus unserer Tendenz, Programme von oben nach unten zu schreiben.
Wir sind immer noch mit unserer sequentiellen Art des Schreibens von Code aufgehängt und
so sehen wir es bequemer, Code von oben nach unten zu schreiben
und ihn so zu betrachten, als ob er in dieser Reihenfolge ausgeführt wird.
Jetzt können wir das Callback Hell Problem umgehen, indem wir
keine anonymen Funktionen für die Callbacks verwenden, sondern
diese Funktionen mit bestimmten Namen deklarieren
und dann vermeiden, wie wir den Code schreiben, wie Sie hier gesehen haben.
Das ist einer der Ansätze, die Leute ergreifen, um mit dem Callback Hell Problem umzugehen.
Es gibt mehrere andere Ansätze, die vorgeschlagen wurden,
Links zu einigen Artikeln in dieser Hinsicht sind in den zusätzlichen Ressourcen zur Verfügung gestellt.
Aber in diesem speziellen Vortrag
werde ich mich auf einen bestimmten Ansatz konzentrieren, der
verwendet wird, um das Callback Hell Problem zu behandeln,
nämlich die Verwendung von Versprechen.
So können wir Versprechungen verwenden, um das Callback Hell Problem in gewissem Maße zu zähmen.
Wir werden uns ansehen, wie Versprechen uns in dieser Hinsicht helfen und in
der Übung werden wir sehen, wie, weil der NODE-MONGO DB-Treiber bereits
eine Proxy-Schnittstelle unterstützt, können wir diese nutzen, um unseren Code neu zu schreiben,
um die versprechende Unterstützung im MONGO DB-Treiber zu nutzen.
Kurz zusammenfassen, was ein Versprechen ist.
Ein Versprechen ist ein Mechanismus, der asynchrone Berechnungen unterstützt.
Wenn Sie also viel Arbeit haben, die getan werden muss,
fungiert das Versprechen als Stellvertreter für einen Wert,
der im Moment nicht bekannt ist, aber das Versprechen wird Ihnen gegeben.
Aber wenn der Wert verfügbar wird,
wird er in Zukunft verfügbar sein.
Das Versprechen stellt also einen Platzhalter für diesen Wert dar.
Wenn der Wert korrekt ist,
wird Ihr Versprechen korrekt ausgeführt und Sie können
einen Code ausführen lassen, um die Tatsache zu handhaben, dass das Versprechen korrekt aufgelöst wurde,
wenn nicht, dann behandeln Sie den Fehler in dieser Situation.
Also, ein Versprechen wird entweder in Entschlossenheit oder die Ablehnung des Versprechens lösen.
Ein ausstehendes Versprechen kann entweder aufgelöst werden
, wenn der Wert korrekt erhalten wird. In diesem Fall
wird es aufgelöst oder was wir als Erfüllung des Versprechens nennen.
Also, wenn das Versprechen gelöst ist,
dann haben Sie einen Code, der
die Tatsache behandelt, dass das Versprechen gelöst wurde.
Wenn das Versprechen abgelehnt wird,
sollten Sie diese Situation auch mit
der Ablehnung des Versprechens entsprechend in Ihrem Code umgehen.
Das ist also der Grund, wenn Sie ein Versprechen erstellen, geben
Sie nur die Lösung und die Ablehnungsoptionen daraus an.
Die Auflösungsoption wird in der Regel vom Arzt dann Option für Ihr Versprechen behandelt.
Warum verwenden wir Versprechungen?
Versprechen werden verwendet, weil es
das Callback-Hölle Problem zu einem großen Teil adressiert und Versprechen geändert werden können.
Zum Beispiel, wenn Sie ein Versprechen haben, das
wiederum einen Aufruf an ein anderes auslöst, das ein Versprechen zurückgibt.
Die Handhabung des Versprechens kann in das Handle des vorherigen Versprechens geändert werden.
Sie können also eine Reihe von
Aufrufen haben, die die Rückgabe des Wertes behandeln.
Jetzt werden wir die Verwendung dieses in der Übung sehen, die dieser Vorlesung folgt.
Um ein Versprechen zu konsumieren,
registrieren Sie eine geeignete Callback-Funktion,
wenn der Verbraucher eines
Versprechens entweder über die Erfüllung oder die Ablehnung der Zusage benachrichtigt wird.
Die Callbacks werden also über die.then () für das Versprechen registriert.
Sie werden die.catch () verwenden, um die Fehler innerhalb des Rückgabeversprechens abzufangen.
Nun können die.then () -Methoden
miteinander verkettet werden, wie Sie in der folgenden Übung sehen werden.
Als Beispiel würden Sie normalerweise ein Versprechen verarbeiten, indem Sie
die.then () und der.catch () an den Promise-Wert verketten.