Wie gehe ich mit abhängigen Ergebnissen in Promise-Ketten um?
Bei Ihrer Frage geht es darum, wie frühere Ergebnisse in einer Folge von Promise-basierten HTTP-Anfragen genutzt werden können. Um dieses Problem anzugehen, betrachten wir zunächst verschiedene Strategien zum Teilen von Daten über abhängige Versprechen hinweg. Die Wahl der Strategie hängt davon ab, ob Sie Zugriff auf alle vorherigen Ergebnisse oder nur auf das neueste benötigen.
Ergebnisse nacheinander einspeisen
In diesem Modell das Ergebnis jedes einzelnen Die Anfrage wird als Argument an die nächste übergeben. Der Zugriff auf frühere Ergebnisse wird jedoch zu einer Herausforderung.
Ergebnisse einem höheren Bereich zuweisen
Alternativ können Sie die Ergebnisse in Variablen in einem höheren Bereich speichern. Dies ermöglicht den Zugriff auf alle vorherigen Ergebnisse.
Ergebnisse in einem Objekt akkumulieren
Bei diesem Ansatz wird ein Objekt erstellt, um Ergebnisse zu akkumulieren. Jede Anfrage fügt ihr Ergebnis dem Objekt hinzu und macht alle vorherigen Daten verfügbar.
Verschachtelte Versprechenketten
Verschachtelte Versprechen bewahren den Zugriff auf frühere Ergebnisse. Jede nachfolgende Ebene bietet einen Bereich, in dem alle früheren Ergebnisse zugänglich sind.
Unterbrechung der Kette mit Promise.all()
Wenn einige Anfragen unabhängig voneinander ausgeführt werden können, können Sie sie verwenden Promise.all() wartet auf deren Abschluss. Dadurch können Sie ihre Ergebnisse asynchron erhalten.
Verwendung von Async/Await in ES7
In ES7 kann async/await die Abfolge asynchroner Vorgänge vereinfachen. Die Ergebnisse sind im gleichen Bereich verfügbar, sodass mehrere .then()-Handler nicht erforderlich sind.
Gilt für Ihr Beispiel
In Ihrem speziellen Fall handelt es sich um einen API-Schlüssel zwischen mehreren HTTP-Anfragen übergeben wird, könnten Sie:
var r1, r2, r3; callhttp("172.16.28.200", payload).then(function(result1) { r1 = result1.data; // Extract the API key return callhttp("172.16.28.200", payload); }).then(function(result2) { r2 = result2.data; // r1 contains the API key from the previous request return callhttp("172.16.28.200", payload); }).then(function(result3) { r3 = result3.data; // r1 and r2 contain the API keys from the previous requests });
Das obige ist der detaillierte Inhalt vonWie verwaltet man abhängige Ergebnisse in JavaScript-Versprechensketten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!