Heim > Web-Frontend > js-Tutorial > Detaillierte Einführung in Promise in es6

Detaillierte Einführung in Promise in es6

零下一度
Freigeben: 2017-06-26 15:23:45
Original
1831 Leute haben es durchsucht

Promise

  1. Promise ist ein Objekt, von dem Nachrichten für asynchrone Operationen abgerufen werden können

  2. Eigenschaften: Der Status des Objekts ist nicht von den Auswirkungen der Außenwelt betroffen (Ausstehend in Bearbeitung, Aufgelöst abgeschlossen, Abgelehnt fehlgeschlagen), nur das Ergebnis des asynchronen Vorgangs kann den aktuellen Status bestimmen. Sobald sich der Status ändert, ändert er sich nicht mehr (nur von Ausstehend zu Gelöst und Ausstehend zu). Abgelehnt);

  3. Nachteile: Nach der Erstellung wird es sofort ausgeführt und kann nicht auf halbem Weg abgebrochen werden; intern ausgelöste Fehler können nicht nach außen reflektiert werden; , es ist unmöglich zu wissen, in welcher Phase sich der aktuelle Fortschritt befindet.

  4. Definieren Sie im Allgemeinen nicht die Rückruffunktion des Ablehnungsstatus in der then-Methode (dh dem zweiten Parameter von then). , aber verwenden Sie die Catch-Methode, da diese die Fehler im vorherigen Fall erfassen kann und die

  5. catch-Methode näher am synchronen Schreiben liegt ein Promise-Objekt, sodass Sie die then-Methode auch später in der Catch-Methode aufrufen können. Es kann auch einen Fehler auslösen

  6. Die Promise.all-Methode wird zum Packen mehrerer Promise-Instanzen verwendet eine neue Promise-Instanz; die Parameter der Promise.all-Methode dürfen keine Arrays sein, müssen aber vorhanden sein. Sie verfügt über eine Iterator-Schnittstelle, und jedes zurückgegebene Mitglied ist nur dann eine Promise-Instanz, wenn der Status p1, p2, p3 erfüllt ist ; Solange es eine Ablehnung gibt, wird p abgelehnt;

  7. Promise.race verpackt auch mehrere Promise-Instanzen in ein neues Promise; von p ändert sich entsprechend und der Wert des ersten geänderten Objekts wird zurückgegeben und an die Rückruffunktion von p übergeben.
  8. Promise.resolve konvertiert das Objekt in ein Promise-Objekt und Der Status wird aufgelöst

  9. // 将thenable对象转为Promise对象var thenable = {
        then(resolve, reject) {
            resolve(200)
        }
    }var p = Promise.resolve(thenable)
    
    p.then((data) => {
      console.log(data)
    })  // 200
    Nach dem Login kopieren
  10. Promise .reject gibt ein Promise-Objekt zurück und der Instanzstatus wird abgelehnt. Die Parameter dieser Methode bleiben erhalten unverändert als Ablehnungsgrund und werden zum Parameter nachfolgender Methoden.
  11. Zwei zusätzliche Methoden

  12. // donePromise.prototype.done = function(onFulfilled, onRejected) {this.then(onFulfilled, onRejected)
            .catch(function(reason) {
                setTimeout(() => {throw reason}, 0)   
            });
    };// finallyPromise.prototype.finally = function (callback) {
        let P = this.constructor;return this.then(
            value  => P.resolve(callback()).then(() => value),
            reason => P.resolve(callback()).then(() => { throw reason })
        );
    };
    Nach dem Login kopieren
    done dienen dazu, jederzeit auftretende Fehler zu erfassen und global auszulösen;
    finally wird für Operationen verwendet, die unabhängig vom Status des Promise-Objekts ausgeführt werden. Es akzeptiert eine allgemeine Rückruffunktion als Parameter (muss ausgeführt werden).

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in Promise in es6. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage