Heim Web-Frontend js-Tutorial Ausführliche Erklärung der Verwendung von Promise in JavaScript mit Beispielen_Grundkenntnisse

Ausführliche Erklärung der Verwendung von Promise in JavaScript mit Beispielen_Grundkenntnisse

May 16, 2016 pm 03:53 PM
javascript promise

Auszug – Parse JavaScript SDK bietet jetzt einen jquery-kompatiblen Promises-Modus, der die meisten asynchronen Methoden unterstützt. Was das bedeutet, werden Sie verstehen, nachdem Sie das Folgende gelesen haben.

„Versprechen“ stellen das nächste große Paradigma in der JavaScript-Programmierung dar, aber zu verstehen, warum sie so großartig sind, ist nicht einfach. Der Kern besteht darin, dass ein Versprechen ein Aufgabenergebnis darstellt, das möglicherweise erfüllt wird oder nicht. Die einzige für den Promise-Modus erforderliche Schnittstelle ist der Aufruf der then-Methode, mit der eine Rückruffunktion registriert werden kann, die aufgerufen wird, wenn das Versprechen abgeschlossen ist oder fehlschlägt. Dies wird im Allgemeinen in CommonJS Promises/A-Vorschlag. Ich möchte beispielsweise ein Prase.Object-Objekt speichern. Dies ist eine asynchrone Operation. Im alten Callback-Paradigma könnte Ihr Code so geschrieben sein:

object.save({ key: value }, {
 success:function(object) {
  // the object was saved.
 },
 error:function(object, error) {
  // saving the object failed.
 }
});
在新的Promise范式中,同样的代码你可以这样写:
 
object.save({ key: value }).then(
 function(object) {
  // the object was saved.
 },
 function(error) {
  // saving the object failed.
 });
Nach dem Login kopieren
Kein großer Unterschied? Was ist also die große Sache? Nun, die wahre Stärke von Versprechen liegt in der Verkettung von Vielfachen. Wenn Promise.then(func) aufgerufen wird, wird ein neues Versprechen zurückgegeben, das erst ausgeführt wird, wenn das vorherige abgeschlossen ist. Hier gibt es jedoch einen Sonderfall: Wenn mein Rückruf bis dahin ein neues Versprechen zurückgibt, wird das bis dahin zurückgegebene Versprechen erst dann ausgeführt, wenn die Rückrufausführung abgeschlossen ist. Weitere Informationen finden Sie unter Versprechen/A. Dies ist eine komplexe Regel. Wir können sie anhand von Beispielen besser verstehen.

Angenommen, Sie schreiben einen Anmeldecode, der nach einem Objekt sucht und es dann aktualisiert. Im alten Callback-Paradigma könnten Sie die Pyramidencode-Vervollständigung verwenden:


Parse.User.logIn("user","pass", {
 success:function(user) {
  query.find({
   success:function(results) {
    results[0].save({ key: value }, {
     success:function(result) {
      // the object was saved.
     }
    });
   }
  });
 }
});
Nach dem Login kopieren
Das sieht schon lächerlich aus, aber was noch lächerlicher ist, ist, dass es nicht einmal eine Fehlerbehandlung gibt. Aber die Promise-Chain-Struktur lässt den Code komfortabler aussehen:



Parse.User.logIn("user","pass").then(function(user) {
 returnquery.find();
}).then(function(results) {
 returnresults[0].save({ key: value });
}).then(function(result) {
 // the object was saved.
});
Nach dem Login kopieren
Wow! So viele!


Fehlerbehandlung

Der obige Code fügte keine Fehlerbehandlung hinzu, als er einfach war, aber nachdem Sie ihn hinzugefügt haben, werden Sie feststellen, dass es im alten Rückrufcode ein Durcheinander ist:



Parse.User.logIn("user","pass", {
 success:function(user) {
  query.find({
   success:function(results) {
    results[0].save({ key: value }, {
     success:function(result) {
      // the object was saved.
     },
     error:function(result, error) {
      // An error occurred.
     }
    });
   },
   error:function(error) {
    // An error occurred.
   }
  });
 },
 error:function(user, error) {
  // An error occurred.
 }
});
Nach dem Login kopieren
Da Versprechen wissen, ob die Verarbeitung abgeschlossen ist, können Fehler weitergegeben werden, ohne dass ein Rückruf ausgeführt wird, bis ein Fehler auftritt. Der obige Code kann beispielsweise wie folgt abgekürzt werden:



Parse.User.logIn("user","pass").then(function(user) {
 returnquery.find();
}).then(function(results) {
 returnresults[0].save({ key: value });
}).then(function(result) {
 // the object was saved.
},function(error) {
 // there was some error.
});
Nach dem Login kopieren
Normalerweise denken Entwickler, dass ein Fehler bei einem asynchronen Versprechen gleichbedeutend mit dem Auslösen einer Ausnahme ist. Wenn ein Rückruf einen Fehler auslöst, gibt das Versprechen tatsächlich eine Fehlermeldung zurück. Die Übergabe des Fehlers an den nächsten verfügbaren Fehlerhandler entspricht dem Auslösen einer Ausnahme, bis sie abgefangen wird.


jQuery, Backbone und Parse

Es gibt viele Bibliotheken, die Versprechen zur Verwendung durch Entwickler implementieren. Wie Deferred von jQuery, WinJS.Promise von Microsoft, when.js, q und dojo.Deferred.

Es gibt jedoch etwas Interessantes zu wissen. Sie können die lange und faszinierende jQuery-Pull-Request-Diskussion hier lesen. Die Implementierung von jQuery folgt an vielen Stellen nicht vollständig den Regeln. Wenn ein Fehlerbehandler andere Informationen als nur die Rückgabe eines Versprechens zurückgibt, erwägen die meisten Implementierungen die Behandlung des Fehlers, ohne ihn weiterzugeben. Jquery denkt jedoch nicht daran, diesen Fehler hier zu behandeln, sondern gibt ihn stattdessen weiter. Obwohl Versprechen aus verschiedenen Systemen nahtlos ineinander übergehen sollten, sollten Sie dennoch vorsichtig sein. Ein mögliches Problem besteht darin, dass Versprechen im Fehlerbehandler zurückgegeben werden (und die ursprünglichen Werte ersetzen), da sie gleich behandelt werden.



doFailingAsync().then(function() {
 // doFailingAsync doesn't succeed.
},function(error) {
 // Try to handle the error.
 return"It's all good.";
}).then(function(result) {
 // Non-jQuery implementations will reach this with result === "It's all good.".
},function(error) {
 // jQuery will reach this with error === "It's all good.".
});
Nach dem Login kopieren

In der neuesten Version von Backbone 0.9.10 geben asynchrone Methoden jetzt ein jqXHR zurück, eine Art jQuery-Versprechen. Eines der Ziele des Parse JavaScript SDK ist es, so weit wie möglich mit Backbone kompatibel zu sein. Wir können kein jqXHR zurückgeben, da es nicht gut mit
Cloud Code funktioniert Fügen Sie eine Parse.Promise-Klasse hinzu. Sie folgt dem jQuery Deferred-Standard. JavaScript SDK analysierenIn der neuesten Version wurden alle asynchronen Methoden aktualisiert, um diese neuen Objekte zu unterstützen, und die alten Rückrufmethoden sind weiterhin verfügbar. Aufgrund der oben aufgeführten Beispiele glaube ich jedoch, dass Sie den neuen Weg bevorzugen. Also versuchen Sie es mit Versprechen!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So implementieren Sie ein Online-Spracherkennungssystem mit WebSocket und JavaScript So implementieren Sie ein Online-Spracherkennungssystem mit WebSocket und JavaScript Dec 17, 2023 pm 02:54 PM

So implementieren Sie mit WebSocket und JavaScript ein Online-Spracherkennungssystem. Einführung: Mit der kontinuierlichen Weiterentwicklung der Technologie ist die Spracherkennungstechnologie zu einem wichtigen Bestandteil des Bereichs der künstlichen Intelligenz geworden. Das auf WebSocket und JavaScript basierende Online-Spracherkennungssystem zeichnet sich durch geringe Latenz, Echtzeit und plattformübergreifende Eigenschaften aus und hat sich zu einer weit verbreiteten Lösung entwickelt. In diesem Artikel wird erläutert, wie Sie mit WebSocket und JavaScript ein Online-Spracherkennungssystem implementieren.

WebSocket und JavaScript: Schlüsseltechnologien zur Implementierung von Echtzeitüberwachungssystemen WebSocket und JavaScript: Schlüsseltechnologien zur Implementierung von Echtzeitüberwachungssystemen Dec 17, 2023 pm 05:30 PM

WebSocket und JavaScript: Schlüsseltechnologien zur Realisierung von Echtzeit-Überwachungssystemen Einführung: Mit der rasanten Entwicklung der Internet-Technologie wurden Echtzeit-Überwachungssysteme in verschiedenen Bereichen weit verbreitet eingesetzt. Eine der Schlüsseltechnologien zur Erzielung einer Echtzeitüberwachung ist die Kombination von WebSocket und JavaScript. In diesem Artikel wird die Anwendung von WebSocket und JavaScript in Echtzeitüberwachungssystemen vorgestellt, Codebeispiele gegeben und deren Implementierungsprinzipien ausführlich erläutert. 1. WebSocket-Technologie

Verwendung von JavaScript und WebSocket zur Implementierung eines Echtzeit-Online-Bestellsystems Verwendung von JavaScript und WebSocket zur Implementierung eines Echtzeit-Online-Bestellsystems Dec 17, 2023 pm 12:09 PM

Einführung in die Verwendung von JavaScript und WebSocket zur Implementierung eines Online-Bestellsystems in Echtzeit: Mit der Popularität des Internets und dem Fortschritt der Technologie haben immer mehr Restaurants damit begonnen, Online-Bestelldienste anzubieten. Um ein Echtzeit-Online-Bestellsystem zu implementieren, können wir JavaScript und WebSocket-Technologie verwenden. WebSocket ist ein Vollduplex-Kommunikationsprotokoll, das auf dem TCP-Protokoll basiert und eine bidirektionale Kommunikation zwischen Client und Server in Echtzeit realisieren kann. Im Echtzeit-Online-Bestellsystem, wenn der Benutzer Gerichte auswählt und eine Bestellung aufgibt

Halten Sie Ihr Wort: Die Vor- und Nachteile der Einhaltung Ihrer Versprechen Halten Sie Ihr Wort: Die Vor- und Nachteile der Einhaltung Ihrer Versprechen Feb 18, 2024 pm 08:06 PM

Im täglichen Leben stoßen wir oft auf Probleme zwischen Versprechen und Erfüllung. Ob in einer persönlichen Beziehung oder einer Geschäftstransaktion: Das Einhalten von Versprechen ist der Schlüssel zum Aufbau von Vertrauen. Allerdings sind die Vor- und Nachteile eines Engagements oft umstritten. In diesem Artikel werden die Vor- und Nachteile von Verpflichtungen untersucht und einige Ratschläge gegeben, wie Sie Ihr Wort halten können. Die versprochenen Vorteile liegen auf der Hand. Erstens schafft Engagement Vertrauen. Wenn jemand sein Wort hält, lässt er andere glauben, dass er eine vertrauenswürdige Person ist. Vertrauen ist die Bindung zwischen Menschen, die Menschen mehr machen kann

So implementieren Sie ein Online-Reservierungssystem mit WebSocket und JavaScript So implementieren Sie ein Online-Reservierungssystem mit WebSocket und JavaScript Dec 17, 2023 am 09:39 AM

So implementieren Sie ein Online-Reservierungssystem mit WebSocket und JavaScript. Im heutigen digitalen Zeitalter müssen immer mehr Unternehmen und Dienste Online-Reservierungsfunktionen bereitstellen. Es ist von entscheidender Bedeutung, ein effizientes Online-Reservierungssystem in Echtzeit zu implementieren. In diesem Artikel wird erläutert, wie Sie mit WebSocket und JavaScript ein Online-Reservierungssystem implementieren, und es werden spezifische Codebeispiele bereitgestellt. 1. Was ist WebSocket? WebSocket ist eine Vollduplex-Methode für eine einzelne TCP-Verbindung.

JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Wettervorhersagesystems JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Wettervorhersagesystems Dec 17, 2023 pm 05:13 PM

JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Wettervorhersagesystems Einführung: Heutzutage ist die Genauigkeit von Wettervorhersagen für das tägliche Leben und die Entscheidungsfindung von großer Bedeutung. Mit der Weiterentwicklung der Technologie können wir genauere und zuverlässigere Wettervorhersagen liefern, indem wir Wetterdaten in Echtzeit erhalten. In diesem Artikel erfahren Sie, wie Sie mit JavaScript und WebSocket-Technologie ein effizientes Echtzeit-Wettervorhersagesystem aufbauen. In diesem Artikel wird der Implementierungsprozess anhand spezifischer Codebeispiele demonstriert. Wir

Einfaches JavaScript-Tutorial: So erhalten Sie den HTTP-Statuscode Einfaches JavaScript-Tutorial: So erhalten Sie den HTTP-Statuscode Jan 05, 2024 pm 06:08 PM

JavaScript-Tutorial: So erhalten Sie HTTP-Statuscode. Es sind spezifische Codebeispiele erforderlich. Vorwort: Bei der Webentwicklung ist häufig die Dateninteraktion mit dem Server erforderlich. Bei der Kommunikation mit dem Server müssen wir häufig den zurückgegebenen HTTP-Statuscode abrufen, um festzustellen, ob der Vorgang erfolgreich ist, und die entsprechende Verarbeitung basierend auf verschiedenen Statuscodes durchführen. In diesem Artikel erfahren Sie, wie Sie mit JavaScript HTTP-Statuscodes abrufen und einige praktische Codebeispiele bereitstellen. Verwenden von XMLHttpRequest

Erfahren Sie mehr über Promise.resolve() Erfahren Sie mehr über Promise.resolve() Feb 18, 2024 pm 07:13 PM

Eine detaillierte Erklärung von Promise.resolve() erfordert spezifische Codebeispiele. Promise ist ein Mechanismus in JavaScript zur Verarbeitung asynchroner Vorgänge. In der tatsächlichen Entwicklung ist es häufig erforderlich, einige asynchrone Aufgaben zu verarbeiten, die nacheinander ausgeführt werden müssen, und die Methode Promise.resolve () wird verwendet, um ein erfülltes Promise-Objekt zurückzugeben. Promise.resolve() ist eine statische Methode der Promise-Klasse, die a akzeptiert

See all articles