Wir haben gerade etwas über Callback Hell erfahren und
wie Versprechen es uns ermöglichen können, dieses Problem zu überwinden.
Wir wissen, dass der Knoten MongoDB-Treiber nativ Versprechen unterstützt.
Wenn Sie also keinen Callback angeben, geben
die Aufrufe ihrer Funktionen Versprechen zurück.
Also werden wir unsere Anwendung aktualisieren, um die Versprechen zu nutzen, um das
Problem der Rückrufhölle zu vermeiden, das wir gerade in der vorherigen Vorlesung erfahren haben.
Zurück zu unserer Anwendung und
nochmals einen Blick auf den Grund werfen, warum sich die Callback-Hölle in unserem Code entwickelt hat.
Beachten Sie, dass wir hier, wenn
wir die Operationen implementiert haben, eine Operation haben und
dann innerhalb des Rückrufs dieser Operation die nächste Operation initiieren müssen und innerhalb
des Rückrufs dieser Operation starten wir die nächste Operation und so weiter.
Sie sind also am Ende mit dieser pyramidenähnlichen Struktur hier.
Eine Operation innerhalb des Callbacks eines anderen und innerhalb des Callbacks.
Nun, dieser Code wird ziemlich bald unhandlich und kompliziert zu verstehen.
Deshalb möchten wir diesen Code mithilfe
der versprechenden Unterstützung, die Mongo DB Driver bereits
für uns bereitstellt, transformieren, so dass wir stattdessen Versprechen verwenden können,
anstatt die Callback-Funktionen wie in dieser Übung zu verwenden.
Natürlich habe ich die vorherige Version gemacht, nur um Ihnen zu zeigen, wie wir
mit Callback-Hölle landen können und wie wir Versprechungen nutzen können, um dieses Problem zu überwinden.
Also, bevor wir die Datei index.js aktualisieren,
lassen Sie mich in die operations.jsfile gehen und dann werden wir dies zuerst aktualisieren.
Hier werden Sie feststellen, dass, wenn wir diese Funktion hier aufrufen,
wir den zweiten Parameter übergeben, der hier eine Callback-Funktion ist.
Also, weil wir hier Versprechen verwenden werden.
Also werde ich nur diese Callback-Funktion löschen und
da dieser Aufruf des Einfügens sowieso Versprechen zurückgibt,
werde ich nur das Versprechen von dieser Funktion zurückgeben.
Beachten Sie also, wie der Code vereinfacht wurde.
Ähnlich für die zweite
werde ich einfach diese Callback-Funktion entfernen und
dann das Versprechen zurückgeben, das
dadurch zurückgegeben wird, und dann werden wir das im Code in index.js behandeln.
Ähnlich für das Löschen
werde ich auch den Callback entfernen und dann diesen Absturz und auch für Uptade zurückgeben.
Für das Update werden wir den Rückruf entfernen, den wir
hier gegeben haben und dann das Versprechen zurückgeben.
Auf diese Weise
werden all diese vier Funktionen das Versprechen zurückgeben, das bereits
von diesen Aufrufen an die MongoDB-Treiberfunktionen zurückgegeben wird.
Jetzt, wenn wir das abgeschlossen haben,
gehen wir zurück zu index.js.
In index.js werde ich diese Funktion hier erneut aktualisieren. Die
Verwendung von Versprechungen wird also MongoClient.connect (url) sagen und dann
werden wir dies ersetzen, indem wir „dann“ sagen und dies erhält nur die Datenbank als ihren Parameter.
Und hier drinnen werden wir den Rest behandeln und auch
wir können bemerken, dass diese spezielle Funktion das „Dann“ hier und das Versprechen schließt,
den zweiten Teil des Versprechens,
können wir den Fehler behandeln.
Wir können consolelog sagen.
So können wir den Fang des Versprechens auch verwenden, um die Fehler zu fangen.
Auf diese Weise haben wir die Fehler erwischt.
Nun, lassen Sie uns den Code hier verbessern.
Also hier drin machen wir DB-Operation Insert-Dokument,
und anstatt diese Funktion hier aufzurufen,
was ich tun werde, ist dies in das „Dann“ hier zu verwandeln.
Also werde ich das schließen und sagen.dann Ergebnis.
Also innerhalb dieses Ergebnisses
werden wir das Konsolenprotokoll ausdrucken und dann.
Also werde ich das hier abschließen und dann
schließen wir das „Dann“ hier und dann
wird dies wieder ein „Dann“ hier angehängt.
Sie sehen also, dass ich zwei „thens“
eins in das andere hier und dann in uns verkette, dann
machen wir ein Konsolenprotokoll und dann werden wir eine Rückkehr der nächsten Operation machen.
Aber dann, für diese Operation,
werde ich dies schließen und dann schließen,
und dann
wird dieser Rückruf jetzt wieder in einer „dann“ -Funktion behandelt.
Also beachten Sie, wie Sie die erste Funktion haben und in der „dann“ rufen wir
die dboper find Dokumente auf und das wird zurückkehren und dies wird ein Versprechen zurückgeben. Dieses
Versprechen wird dann damit gehandhabt.
Wir verketten also zwei Thens zusammen und verketten dann wieder ein weiteres „dann“ hier.
Lassen Sie mich den Code hier neu erfinden und dann werden wir dies hier zurückgeben und
dies wird wieder schließen und schließen, dass „dann“
und dann wird dies innerhalb des nächsten „dann“ eingeschlossen und wir
werden die nächste Funktion hier aufrufen „, dass
db.DropCollection ('Gerichte' und schließen Sie „das dann“ und die nächste hier.
Wir werden das „Dann“ des Ergebnisses hier behandeln.
Gibt dbclose zurück und all
diese hier können jetzt entfernt werden, da sie nicht mehr benötigt werden.
Und dann, wenn es einen Fehler gibt, wird der Fehler diese Funktion abfangen.
Also werde ich das einfach kopieren und es dann hier einfügen. Das ist es.
Mit dieser Änderung
ist Ihr Code hier viel einfacher zu handhaben.
Wie Sie sehen können,
haben Sie die MongoClient.Connect, die
ein Versprechen zurückgibt und innerhalb der Verarbeitung dieses Versprechens
rufen sie diese Methoden auf und nacheinander geben sie
jeweils das Versprechen zurück und dann verketten Sie sie mit dem.
Diese Akkordstruktur ist viel einfacher zu folgen als das, was wir früher implementiert hatten.
Mit Versprechungen haben wir es buchstäblich umgedreht und dann
die Callback-Hölle vermieden, die wir in der früheren Version dieser Anwendung gesehen haben.
Also lassen Sie uns die Änderungen sowohl in der
index.jsn.operation.js speichern und dann einen Blick auf diese Anwendung werfen.
Gehen Sie wieder zum Terminal,
geben Sie an der Eingabeaufforderung „npm
start“ ein und Sie werden sehen, dass Ihre Anwendung genau wie zuvor läuft,
fügt es das Dokument ein, findet das Dokument,
aktualisiert das Dokument und findet dann das aktualisierte Dokument und schließt dann die Datenbank des Aktes.
Mit Versprechungen haben wir den Code so umstrukturiert, dass er viel einfacher ist und
die Callback-Hölle vermieden wurde, die wir in der vorherigen Version dieser Anwendung gesehen haben.
Damit schließen wir diese Übung ab.
In dieser Übung haben Sie gesehen, wie wir
Versprechen nutzen können, um die Callback-Hölle zu vermeiden.
Dies ist ein guter Zeitpunkt für Sie, ein Git-Commit mit
der Nachricht Callback Hölle und Versprechen zu machen.