Heim >Web-Frontend >js-Tutorial >Wie kann man Daten zwischen Versprechen in JavaScript effizient sequenzieren und teilen?
So sequenzieren und teilen Sie Daten in Promise-Ketten
Promises bieten ein leistungsstarkes Tool zum Verwalten asynchroner Vorgänge in JavaScript. Dabei ist es notwendig, Vorgänge zu sequenzieren und Daten zwischen ihnen auszutauschen. Lassen Sie uns das spezifische Problem angehen:
HTTP-Anfragen und Datenaustausch mit Versprechen verketten
In diesem Szenario verwenden Sie Versprechen, um eine Reihe von HTTP-Anfragen auszuführen Die Antwort einer Anfrage sollte als Eingabe für die nächste verwendet werden. Die callhttp-Funktion verarbeitet diese Anfragen, muss jedoch auf Daten früherer Anfragen zugreifen, um die nächste zu erstellen. Konkret möchten Sie den aus der ersten Anfrage erhaltenen API-Schlüssel an nachfolgende Anfragen weitergeben.
Ansätze für die gemeinsame Nutzung und Sequenzierung von Daten
Es gibt mehrere Ansätze, um dies zu erreichen:
1. Verkettete Versprechen:
Verketten Sie die Versprechen mithilfe von then und übergeben Sie Zwischendaten als Argumente:
callhttp(url1, payload) .then(firstResponse => { // Use the data from firstResponse in the next request return callhttp(url2, payload, firstResponse.apiKey); }) .then(secondResponse => { // Use the combined data from firstResponse and secondResponse in the next request return callhttp(url3, payload, firstResponse.apiKey, secondResponse.userId); });
2. Höhere Bereichszuweisung:
Zwischenergebnisse Variablen in einem höheren Bereich zuweisen:
var firstResponse; callhttp(url1, payload) .then(result => { firstResponse = result; return callhttp(url2, payload); }) .then(secondResponse => { // Use both firstResponse and secondResponse here });
3. Ergebnisse akkumulieren:
Ergebnisse in einem akkumulierenden Objekt speichern:
var results = {}; callhttp(url1, payload) .then(result => { results.first = result; return callhttp(url2, payload); }) .then(result => { results.second = result; return callhttp(url3, payload); }) .then(() => { // Use the accumulated results in results object });
4. Verschachtelte Versprechen:
Nest verspricht, den Zugriff auf alle vorherigen Ergebnisse aufrechtzuerhalten:
callhttp(url1, payload) .then(firstResponse => { // Use firstResponse here return callhttp(url2, payload) .then(secondResponse => { // Use both firstResponse and secondResponse here return callhttp(url3, payload); .then(thirdResponse => { // Use all three responses here }); }); });
5. Teilen Sie mit Promise.all():
Wenn einige Anfragen unabhängig voneinander gestellt werden können, teilen Sie die Kette in einzelne Teile auf und verwenden Sie Promise.all(), um die Ergebnisse zu sammeln:
const first = callhttp(url1, payload); const second = callhttp(url2, payload); const third = callhttp(url3, payload); Promise.all([first, second, third]) .then(results => { // Use all three results here });
ES7 Async/Await:
In ES7 optimiert die Async/Await-Syntax den Prozess der Sequenzierung und Handhabung versprochener Ergebnisse, wodurch ein einfacherer und besser lesbarer Code bereitgestellt wird:
async function httpRequests() { const firstResponse = await callhttp(url1, payload); const secondResponse = await callhttp(url2, payload, firstResponse.apiKey); const thirdResponse = await callhttp(url3, payload, firstResponse.apiKey, secondResponse.userId); // Use all three responses here } httpRequests();
Das obige ist der detaillierte Inhalt vonWie kann man Daten zwischen Versprechen in JavaScript effizient sequenzieren und teilen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!