Heim > Web-Frontend > js-Tutorial > Wie kann ich auf Zwischen-Promise-Ergebnisse in JavaScript-Promise-Ketten zugreifen?

Wie kann ich auf Zwischen-Promise-Ergebnisse in JavaScript-Promise-Ketten zugreifen?

Barbara Streisand
Freigeben: 2024-12-24 06:39:17
Original
262 Leute haben es durchsucht

How Can I Access Intermediate Promise Results in JavaScript Promise Chains?

Zwischenergebnisse in Versprechensketten verwalten

Problem:

Beim Erstellen von Versprechensketten ist es Es kann schwierig sein, im letzten Rückruf auf Zwischenergebnisse des Versprechens zuzugreifen. Wie können wir im folgenden Beispiel auf das Ergebnis von PromiseA innerhalb des Rückrufs für PromiseB zugreifen?

function getExample() {
    return promiseA(…).then(function(resultA) {
        // Processing
        return promiseB(…);
    }).then(function(resultB) {
        // How can we access resultA here?
    });
}
Nach dem Login kopieren

Lösung: Unterbrechen der Kette

Um auf Zwischenergebnisse zuzugreifen Um die Versprechenskette zu verstehen, ist es am besten, die Kette in einzelne Komponenten aufzuteilen. Auf diese Weise können Sie mehrere Rückrufe an dasselbe Versprechen anhängen und bei Bedarf auf den aufgelösten Wert zugreifen. Hier ist eine verbesserte Version des Codes:

function getExample() {
    var a = promiseA(…);
    var b = a.then(function(resultA) {
        // Processing
        return promiseB(…);
    });
    return Promise.all([a, b]).then(function([resultA, resultB]) {
        // Processing using both resultA and resultB
        return …;
    });
}
Nach dem Login kopieren

Dieser Ansatz nutzt die Promise.all()-Methode, um ein Array aller Versprechen in der Kette zu erstellen. Anschließend verketten wir einen weiteren then()-Rückruf mit dem Promise.all()-Ergebnis und übergeben eine Funktion, die ein Array der aufgelösten Werte empfängt. Dadurch können wir innerhalb des letzten Rückrufs problemlos auf resultA und resultB zugreifen.

Alternative Lösungen:

In ES5 können Sie die Methode .spread() verwenden, um dies zu erreichen ähnliche Funktionalität:

…
return Promise.all([a, b]).then(.spread(function(resultA, resultB) { … });
Nach dem Login kopieren

Bluebird bietet eine dedizierte join()-Methode, die diesen Prozess vereinfacht weiter:

…
return Promise.join(a, b, function(resultA, resultB) { … });
Nach dem Login kopieren

Indem Sie die Kette unterbrechen und die entsprechenden Versprechenskombinatoren verwenden, können Sie elegant auf Zwischenergebnisse von Versprechen zugreifen und diese bearbeiten und so eine klare und effiziente Codestruktur gewährleisten.

Das obige ist der detaillierte Inhalt vonWie kann ich auf Zwischen-Promise-Ergebnisse in JavaScript-Promise-Ketten zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage