Heim  >  Artikel  >  Web-Frontend  >  Erfahren Sie mehr über Promise in ES6

Erfahren Sie mehr über Promise in ES6

hzc
hzcnach vorne
2020-06-29 10:25:272270Durchsuche

Der Anfang von Promise

Aufgrund des asynchronen Mechanismus von JavaScript ist die Callback-Pyramide ein häufiges Problem:

loadImg('a.jpg', function() {
    loadImg('b.jpg', function() {
        loadImg('c.jpg', function() {
            console.log('all done!');
        });
    });
});

Promise Wörtlich: Versprechen. Wenn A B anruft und B ein Versprechen an A zurückgibt, kann A den Plan wie folgt schreiben: Wenn B das Ergebnis an mich zurückgibt, führt A den S1-Plan aus. Andernfalls, wenn B A nicht das gewünschte Ergebnis gibt Grund: Dann führt A den Notfallplan S2 aus. In diesem Fall liegen alle potenziellen Risiken in der Kontrolle von A

var resB = B();
var runA = function(){
   resB.then(execS1,execS2);
};

Wenn A etwas erledigen möchte, darf es nicht auf eine Antwort von B angewiesen sein, dann ändert sich der obige Code Cheng

var resB = B();
var resC = C();
...
 
var runA = function() {
    reqB
        .then(resC, execS2)
        .then(resD, execS3)
        .then(resE, execS4)
        ...
        .then(execS1);
};
 
runA();

Hier wird jedes Mal, wenn ein Vernehmer eine unerwartete Antwort gibt, ein anderer Verarbeitungsmechanismus verwendet, obwohl die Promise-Spezifikation dies nicht erfordert und sogar keine Verarbeitung erforderlich ist, d. h. (Nicht bestehen). im zweiten Parameter von then) oder einheitlich behandeln

Versprechen/A+-Spezifikation

  • Ein Versprechen kann drei Zustände haben: wartend( ausstehend), abgeschlossen(erfüllt), abgelehnt(abgelehnt)

  • Der Status eines Versprechens kann sich nur von „wartend“ auf „Gehe zu“ ändern „Abgeschlossen“ oder „Ablehnen“ kann nicht rückgängig gemacht werden

  • Promise muss die Then-Methode implementieren, (then ist der Kern von Promise) und muss dann a zurückgeben Versprechen, dieselben Versprechen können dann mehrmals aufgerufen werden, und die Reihenfolge der Rückrufausführung ist dieselbe wie die Reihenfolge, in der sie definiert sind.

  • Die then-Methode akzeptiert zwei Parameter. Der erste Parameter ist ein Rückruf bei Erfolg und der andere ist ein Rückruf bei Fehler. Then kann ein weiteres übergebenes Versprechen akzeptieren und akzeptiert auch ein „. Klasse dann" Objekt oder Methode, also thenable object

Standard Promise

kann auf diesen Artikel verweisen JavaScript-Versprechen von html5rocks. Derzeit sind fortgeschrittene Browser wie Chrome und Firefox verfügt über ein integriertes Promise-Objekt, das weitere Betriebsschnittstellen bereitstellt, z. B. Promise.all()
, das die Übergabe einer Reihe von Versprechen unterstützt und dann ausgeführt wird, wenn alle Versprechen abgeschlossen sind Eine benutzerfreundlichere und leistungsfähigere Ausnahmeerfassung sollte für die tägliche asynchrone Programmierung ausreichen.

Promise von Bibliotheken von Drittanbietern

Die meisten der heute beliebten JS-Bibliotheken implementieren Promise in unterschiedlichem Maße, wie z. B. Dojo, jQuery, Zepto, when.js, Q usw., aber sie werden nur offengelegt. Das meiste, was herauskommt, sind Deferred
-Objekte,

Ending

Wir sehen, dass die Verwendung von Promise, egal wie kompliziert die Promise-Implementierung ist, sehr einfach und der Code organisiert ist ist ganz klar. Von nun an besteht kein Grund mehr, mich mit Rückrufen zu quälen.
Endlich sind Versprechen so elegant! Aber Promise löst nur das Problem der tiefen Verschachtelung von Rückrufen. Was die asynchrone JavaScript-Programmierung wirklich vereinfacht, ist Generator. Auf der Seite von Node.js wird empfohlen, Generator in Betracht zu ziehen.

Empfohlenes Tutorial: „JS-Tutorial

Das obige ist der detaillierte Inhalt vonErfahren Sie mehr über Promise in ES6. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:jianshu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen