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
Barbara StreisandOriginal
2024-12-24 06:39:17228Durchsuche

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?
    });
}

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 …;
    });
}

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) { … });

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

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

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!

Stellungnahme:
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
Vorheriger Artikel:Cloud-AnrufNächster Artikel:Cloud-Anruf