[MUSIK]
Als wir über Dienste im vorherigen Modul sprachen, hatte ich
über Versprechen gesprochen und dann habe ich versprochen, dass ich in diesem Modul zu Versprechen zurückkehren werde.
Also, hier sind wir, werde ich mein Versprechen an Sie erfüllen.
Eine synchrone Berechnung ist überall im World Wide Web.
Und wie das Web funktioniert.
Wenn Sie aus der sequentiellen Programmierwelt kommen,
dauert das Umwickeln des Kopfes um eine synchrone Berechnung ziemlich viel Aufwand.
Es gab viele Versuche, asynchrone Berechnungen so schmerzlos wie
möglich für Menschen zu machen, die aus dem sequentiellen Berechnungsbuch in sie übergehen.
Ein solcher Versuch besteht darin, asynchrone Berechnungen
einfacher zu machen, sind Versprechen.
Wie wir erkennen, wird
es einige Zeit dauern, bis die Ergebnisse für uns verfügbar sind, wenn wir eine Anfrage an einen Dienst oder einen Backend-Server stellen.
Wenn wir eine solche Anfrage machen, während wir mit unserer Arbeit
fortfahren, besteht eine hohe Wahrscheinlichkeit, dass unsere Berechnung an dem Punkt stecken bleibt und auf
die Ergebnisse wartet.
Dies ist ein No-Nein in Bezug auf eine gute Benutzererfahrung.
Daher ist es wichtig, dass
Sie, wenn Ihre Ergebnisse Zeit in Anspruch nehmen, in der Lage sein sollten, vorwärts zu gehen, ohne auf die Regeln zu warten.
Und hier kommt die asynchrone Berechnung zu Ihrem Vorteil.
Bei der asynchronen Berechnung, wenn Sie eine Anfrage senden,
erwarten Sie, dass die Ergebnisse zu einem späteren Zeitpunkt zurückkommen
werden, und Sie sollten damit umgehen können, dass die Basis-Ergebnisse zu einem Zeitpunkt
viel später zurückkommen, als Sie an dem Punkt waren, an dem Sie die Anforderung gestellt haben.
Versprechen geben uns einen Weg, damit umzugehen.
Schauen wir uns die Versprechungen in dieser Vorlesung ein wenig genauer an.
Und dann werden wir auch die Verwendung von Versprechen
in unserer Angular-Anwendung ein wenig später sehen.
Verspricht, das allgemeine Konzept ist ein sehr weites Gebiet für sich.
Und in diesem Kurs habe ich keine Zeit, die Details der Versprechen durchzugehen.
Das wird ein ganzer Kurs an sich.
Ich werde Ihnen nur das Wesentliche von Versprechen geben, die notwendig sind,
damit wir verstehen können, wie wir die Versprechungen innerhalb unserer Winkelanwendung nutzen können.
Ich biete Ihnen eine Menge von Leads zu zusätzlichen
Ressourcen, wo Sie gehen und Versprechungen genauer untersuchen können.
Also, auf diese Frage zu kommen, was genau ist ein Versprechen?
Ein Versprechen ist ein Mechanismus, der asynchrone Berechnungen unterstützt.
Ich habe gerade eine lange Erklärung gegeben, warum asynchrone Berechnung
für das Funktionieren des Web unerlässlich ist. Wenn Sie
nun ein Versprechen verwenden, stellt das Versprechen einen Mechanismus oder
einen Proxy für einen Wert bereit, der in dem Moment, in dem Sie danach fragen, nicht verfügbar ist.
So wird ein Versprechen Ihnen ein Versprechen zurückgeben und sagen, dass,
wenn das Ergebnis verfügbar wird, es zurückkommen wird und Ihnen die Ergebnisse liefern wird.
So gibt ein Versprechen ein Proxy-Objekt an Sie zurück, und Sie halten das Proxy-Objekt fest.
Und dieses Proxy-Objekt gibt Ihnen Zugriff auf die Ergebnisse, wenn sie verfügbar sind.
Und es gibt eine Methode, wie Sie auf die Ergebnisse warten.
Sie unterbrechen Ihre Berechnung an diesem Punkt nicht, stattdessen
konfigurieren Sie eine Möglichkeit, die Ergebnisse zu akzeptieren, wenn sie von diesem Versprechen zurückkommt.
Um es auf den Punkt zu bringen,
stellt Versprechen einen Wert dar, der zu einem späteren Zeitpunkt verfügbar sein wird.
Es kann auch sofort verfügbar sein,
in diesem Fall wird das Versprechen den Wert sofort zurückgeben.
Aber falls es einen Wert zu einem zukünftigen Datum zurückgeben muss, gibt es Ihnen
das Versprechen, dass dieser Wert, wenn er verfügbar wird, an Sie zurückgegeben wird.
Es besteht immer die Möglichkeit, dass das Versprechen nicht erfüllt werden kann,
weil die Ergebnisse aus irgendeinem Grund nicht verfügbar sind.
In diesem Fall wird Ihnen ein Fehler zugestellt oder Ihnen wird eine Ablehnung zugestellt
, und es liegt an Ihnen, sich mit der Tatsache zu befassen, dass das Versprechen abgelehnt wurde.
Auf der nächsten Folie schauen wir uns an, wie wir damit umgehen.
Wie wir bereits gelernt haben, ist ein Versprechen ein Stellvertreter für
etwas, das in der Zukunft passieren würde oder in Zukunft nie passieren könnte.
Also wird ein Versprechen, wenn es Ihnen gegeben wird, im ausstehenden Zustand sein.
Wenn sich das Versprechen auflöst, das heißt, dass die Ergebnisse verfügbar werden und
das Versprechen in der Lage ist, Ihnen die Ergebnisse zu liefern, dann wird das Versprechen auflösen oder
erfüllen.
Und in diesem Fall wird das Versprechen vom Status „Ausstehend“ zum „Auflösen“ oder „
Erfüllungszustand“ verschoben.
Zu diesem Zeitpunkt stehen Ihnen Ihre Ergebnisse zur Verfügung.
Es besteht eine geringe Chance, dass das Versprechen aufgrund eines Fehlers
oder was auch immer der Grund ist, abgelehnt werden kann.
In diesem entfernten Fall
wird Ihnen eine Ablehnung zugestellt, und in diesem Fall wird die Zusage als
im abgelehnten Zustand angesehen, wenn die Ablehnung zugestellt wird.
Wenn Sie also ein Versprechen generieren, wie gesagt,
ist ein Versprechen ein Proxy-Objekt, das Ihnen zugestellt wird.
Also, wenn Sie jemandem ein Versprechen geben, wird das Versprechen intern
eine Funktion haben, die sich sowohl mit der Entschlossenheit als auch mit
den Ablehnungsoptionen darin befasst.
Wenn Sie Code schreiben,
werden Sie sehen, dass Sie Code als neues Versprechen schreiben (Funktion (auflösen, ablehnen).
Egal ob es sich auflöst oder abgelehnt wird, wir müssen in der Lage sein,
die Informationen an wen zurückzusenden, an wen wir das Versprechen abgegeben haben.
Wie machen wir das im Code?
Schauen wir uns das auf der nächsten Folie an.
Hier ist ein Beispiel dafür, wie Versprechen im Code konfiguriert wird.
In der Tat ist dieses Beispiel von der Übung abgeleitet, die Sie
ein wenig später machen werden.
Also hier, wenn wir unseren Service konfigurieren, können wir unseren Service
ein Versprechen an eine Komponente zurückgeben, die Daten vom Service anfordert.
Wenn das Versprechen zurückgegeben
wird, steht Ihnen das Rückgabeversprechen als Objekt zur Verfügung.
Und dieses Versprechen bietet zwei Methoden, die dann und die catch-Methode.
Nun, dann ist das Versprechen erfolgreich gelöst.
Dann wird das Versprechen dazu führen,
eine Entschlossenheit aufzurufen.
Wie Sie gesehen haben, ist das Versprechen konstruiert, und innerhalb des Versprechens
haben Sie die Funktion, die Auflösung und Ablehnung als die beiden Parameter.
Wenn das Versprechen das Ergebnis erfolgreich liefern kann,
ruft es die Auflösungsmethode auf und gibt dann das Ergebnis an Sie zurück.
Wo wird das Ergebnis Wirklichkeit?
Wenn Sie Code schreiben, der auf
das Versprechen wartet, würden Sie angeben, was zu tun ist, wenn das Versprechen das Ergebnis
in der dann -Option für dieses Versprechen zurückgibt.
So sagen Sie zum Beispiel, würden Sie sagen, getdishes.Dann und innerhalb von dann
würden Sie die Funktion, die mit dem Ergebnis umgehen, wenn es kommt, liefern.
Wenn das Versprechen nicht in der Lage ist, korrekt zu beheben, wird es abgelehnt, und
der Fehler wird an Sie zurückgesendet.
Der Fehler ist ein Fehlerobjekt, das an Sie zurückgesendet wird.
Wenn ihr Versprechen abgelehnt wird, befassen Sie sich mit
der Ablehnung mit einem Haken in Ihrem Code.
Innerhalb des Catches werden Sie also eine Funktion bereitstellen, die mit dem Fehler fertig wird.
Zum Beispiel können Sie einfach die Fehlermeldung,
das Konsolenprotokoll ausgeben und den Fehler auf diese Weise behandeln.
Oder Sie haben vielleicht eine aufwendigere Möglichkeit, den Fehler zu behandeln.
Das würde in der catch-Option zur Verfügung gestellt werden, die Sie für diesen Versprechencode
auf Ihrer Seite geben, wenn das Versprechen Ihnen eine Ablehnung liefert.
So umgehen die beiden Seiten der Münze mit Versprechungen.
Von einer Seite wird ein Versprechensobjekt gesendet, und
wenn Sie das Versprechensobjekt mit dem Promise-Objekt erhalten, würden Sie entweder
das Dann und den Catch ausführen, sodass Sie sowohl die Than- als auch die
Catch-Metriken implementieren sollten, die in dieses Versprechensobjekt geändert wurden.
Und dann, von diesem Versprechen beiseite, wenn das Versprechen richtig ist,
dann wird die Entschlossenheit aufgerufen und dadurch wird das Ergebnis
in der damaligen Methode Ihres Versprechens geliefert.
Wenn das Versprechen abgelehnt wird,
liefert der Ablehnungsaufruf den Fehler in Ihren Catch.
So würden Sie Code mit Versprechungen implementieren.
Wir werden uns mit dem Beispiel in der Übung befassen, die diesem Vortrag folgt.
Nun offensichtlich ist die Frage, die ich frage, warum Versprechungen?
Später, wenn wir uns mit Node JS beschäftigen,
werden wir uns damit beschäftigen, wie wir Callbacks konstruieren können.
Und ich werde die Details von Callbacks und die Art und Weise erklären, mit
Callbacks umzugehen, wenn wir das Node JS im letzten Kurs dieser Spezialisierung abdecken.
Callbacks haben ein Problem beim Erstellen, was als Callback Hölle bezeichnet wird.
Sie haben also stark verschachtelten Callback-Code
, der sehr kompliziert ist, um herauszufinden, was er zu tun versucht.
Versprechen bieten eine Möglichkeit, dieses Callback-Hölle Problem zu beheben.
Aber für den Moment, in dem wir uns auf Angular konzentrieren, werde ich diesen Punkt nur erwähnen.
Und dann kommen wir zurück, um uns mit dieser Frage im letzten Kurs zu befassen.
Der andere Vorteil der Verwendung von Versprechen ist, dass Versprechen geändert werden können.
Ein Versprechen, wenn es das Ergebnis in der Bin liefert,
können Sie ein anderes Versprechen und eine Rückkehr generieren, und
dieses Versprechen kann behandelt werden, indem Sie eine andere dann Methode an diese und so weiter verketten.
So können Sie eine Reihe von dann Methoden miteinander verketten, um mit
Versprechungen hintereinander umzugehen.
Wenn das Ergebnis sofort verfügbar ist oder wenn Sie sofort ablehnen,
dann bietet Versprechen eine Methode der sofortigen Rückkehr, ohne darauf
zu warten, dass das Versprechen entweder aufgelöst oder abgelehnt wird.
In diesem Fall werden Sie einfach sagen Versprechen mit einem Kapital p.Resolve und
promise.Reject und dann entweder das Ergebnis oder den Fehler sofort zurückgeben.
In der ersten Übung beschäftigen wir uns mit dieser Methode, den Wert
aus unserem Service an unsere Komponenten zurückzugeben.
Im zweiten Teil der Übung werden wir uns mit
der Situation befassen, in der das Versprechen nach einer Zeitdauer lösen wird.
Und auch innerhalb unserer Komponente sollten wir in der Lage sein, mit der Tatsache umzugehen, dass
die Ergebnisse ein wenig später zurückkommen, als wenn Sie nach dem Ergebnis fragen.
Mit diesem schnellen Verständnis der Versprechen
gehen wir zur nächsten Übung, wo wir mit Versprechungen umgehen werden.
( MUSIK)