Heim >Web-Frontend >js-Tutorial >Detaillierte Einführung in Promise in es6
Promise
Promise ist ein Objekt, von dem Nachrichten für asynchrone Operationen abgerufen werden können
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);
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.
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
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
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;
// 将thenable对象转为Promise对象var thenable = { then(resolve, reject) { resolve(200) } }var p = Promise.resolve(thenable) p.then((data) => { console.log(data) }) // 200
// 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 }) ); };done dienen dazu, jederzeit auftretende Fehler zu erfassen und global auszulösen;
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!