Angebot zusagen Muster

Ein Versprechen ist ein Objekt, das den letztendlichen Abschluss oder Ausfall eines asynchronen Vorgangs darstellt. Da die meisten Menschen Verbraucher bereits erstellter Versprechen sind, wird dieser Leitfaden den Verbrauch von zurückgegebenen Versprechungen erläutern, bevor er erläutert, wie sie erstellt werden können. Im obigen Code wird die Kette unterbrochen, wenn Sie das erste Versprechen zurückgeben und nicht das Ergebnis des endgültigen then(). Sie rufen eine Methode auf, die ein Versprechen zurückgibt. Sie vergessen jedoch dieses Versprechen und erstellen Ihr eigenes. Eine gute Faustregel ist es, versprechen Ketten immer zurückzugeben oder zu beenden, und sobald Sie ein neues Versprechen erhalten, geben Sie es sofort zurück, um die Dinge zu glätten: Im Beispiel unten versprechen1 und versprechen2 Renditeversprechen. Wir möchten, dass beide geladen werden, bevor sie fortfahren. Beide Versprechen fließen in Promise.all ein. Wenn eine der beiden Anträge abgelehnt wird, lehnt Promise.all mit dem Wert des abgelehnten Versprechens ab. Wenn beide Anforderungen erfüllt werden, löst Promise.all mit den Werten beider Versprechen (als Liste) auf. Das ist es, was Versprechungen tun, aber mit einer besseren Namensgebung. Wenn HTML-Bildelemente eine “ready”-Methode hatten, die ein Versprechen zurückgab, könnten wir dies tun: Wenn Sie Ihre Versprechen in Serie ausführen müssen, können Sie reduce verwenden.

Einige Programmiersprachen unterstützen Futures, Versprechen, gleichzeitige Logikvariablen, Datenflussvariablen oder I-vars, entweder durch direkte Sprachunterstützung oder in der Standardbibliothek. Wenn Sie dies mit Callbacks oder Ereignissen im Node.js-Stil tun, wird der Code verdoppelt, aber noch wichtiger ist es nicht so einfach zu folgen. Dies ist jedoch nicht das Ende der Geschichte für Versprechungen, in Kombination mit anderen ES6-Funktionen werden sie noch einfacher. Die Antwort ist JSON, aber wir erhalten sie derzeit als Klartext. Wir könnten unsere get-Funktion ändern, um den JSON responseType zu verwenden, aber wir könnten es auch in Versprechungen land lösen: Ein Fall von besonderer Nützlichkeit: Beim Schreiben von Code für Node.js ist es üblich, dass Module, die Sie in Ihr Projekt aufnehmen, abgelehnte Versprechen nicht verarbeitet haben. Diese werden von der Node-Laufzeit an der Konsole protokolliert. Sie können diese für die Analyse und Behandlung durch Ihren Code erfassen – oder einfach nur, um zu vermeiden, dass sie Ihre Ausgabe überladen – indem Sie einen Handler für das unbehandelte Ablehnungsereignis hinzufügen, wie folgt: Dieses Muster ist so nützlich, dass es in Form von asynchronen Funktionen zu ES7 kommt. Es ist so ziemlich das gleiche wie oben, aber keine Notwendigkeit für eine Laichmethode. Indem Sie die preventDefault()-Methode des Ereignisses aufrufen, weisen Sie die JavaScript-Laufzeit an, ihre Standardaktion nicht auszuführen, wenn abgelehnte Versprechen nicht behandelt werden. Diese Standardaktion beinhaltet in der Regel die Protokollierung des Fehlers in der Konsole, und dies ist in der Tat der Fall für Node. …

die ich ziemlich wörtlich von Q angehoben, aber für JavaScript Versprechen angepasst. Damit können wir unser letztes Best-Case-Kapitel-Beispiel nehmen, es mit einer Ladung neuer ES6-Güte mischen und in: reject(obj) Ihr Versprechen wird mit obj abgelehnt. Für Konsistenz und Debugging (z. B. Stapelablaufverfolgungen) sollte obj eine Instanz von Error sein. Alle Fehler, die im Konstruktorrückruf ausgelöst werden, werden implizit an reject(übergeben. Alice ML unterstützt auch Futures, die von jedem Thread gelöst werden können, und ruft diese Versprechen auf. [9] Diese Verwendung von Versprechen unterscheidet sich von ihrer Verwendung in E, wie oben beschrieben. In Alice ist ein Versprechen keine schreibgeschützte Ansicht, und Promise Pipelining wird nicht unterstützt. Stattdessen, Pipelining geschieht natürlich für Futures, auch mit Versprechungen verbunden.

In beiden Fällen verfügt das Ereignis (vom Typ PromiseRejectionEvent) als Mitglieder über eine Versprechenseigenschaft, die das abgelehnte Versprechen angibt, und eine Grundeigenschaft, die den Grund für die Ablehnung des Versprechens liefert. Futures und Versprechungen entstanden in der funktionalen Programmierung und verwandten Paradigmen (z. B. Logikprogrammierung), um einen Wert (eine Zukunft) von der Berechnung (ein Versprechen) zu entkoppeln, so dass die Berechnung flexibler durchgeführt werden konnte, insbesondere durch Parallelisierung.

CategoriesUncategorized