Vorherige Ergebnisse mit Versprechen verketten und teilen
In Ihrem Code versuchen Sie, mehrere HTTP-Anfragen mithilfe der Bluebird-Versprechungsbibliothek zu stellen Sie müssen die Antwortdaten von einer Anfrage zur nächsten weitergeben. Um dies zu erreichen, können Sie mehrere Strategien nutzen, um frühere Ergebnisse mit Versprechen zu verketten und zu teilen.
1. Versprechen verketten
Sie können Versprechen verketten, indem Sie ein Versprechen innerhalb von .then()-Handlern zurückgeben. Jedes nachfolgende .then() erhält das Ergebnis des vorherigen Versprechens. In Ihrem Fall können Sie die Anfragen wie folgt verketten:
callhttp("172.16.28.200", payload).then(function(first) { return callhttp("172.16.28.200", first); }).then(function(second) { return callhttp("172.16.28.200", second); });
2. Ergebnisse akkumulieren
Alternativ können Sie alle Ergebnisse in einem einzigen Objekt akkumulieren. Erstellen Sie ein Objekt zum Speichern der Ergebnisse und übergeben Sie es als Argument an die nachfolgenden Anforderungen:
var results = {}; callhttp("172.16.28.200", payload).then(function(first) { results.first = first; return callhttp("172.16.28.200", first); }).then(function(second) { results.second = second; return callhttp("172.16.28.200", second); }).then(function(third) { results.third = third; });
3. Verschachtelte Versprechen
Wenn Sie Zugriff auf alle vorherigen Ergebnisse benötigen, können Sie Versprechen verschachteln. Jedes verschachtelte Versprechen hat Zugriff auf die Ergebnisse der äußeren Versprechen:
callhttp("172.16.28.200", payload).then(function(first) { return callhttp("172.16.28.200", first).then(function(second) { return callhttp("172.16.28.200", second).then(function(third) { // Access all three results here }); }); });
4. Unterbrechen der Kette
Wenn einige Anfragen unabhängig voneinander ausgeführt werden können, können Sie die Kette unterbrechen und Promise.all() verwenden, um die Ergebnisse zu sammeln, wenn sie alle abgeschlossen sind:
var p1 = callhttp("172.16.28.200", payload); var p2 = callhttp("172.16.28.200", payload); var p3 = callhttp("172.16.28.200", payload); Promise.all([p1, p2, p3]).then(function(results) { // All three results are available in the `results` array });
5. Verwenden von async/await (ES7-Funktion)
In ES7 können Sie die Sequenzierung asynchroner Vorgänge mithilfe von async/await vereinfachen. Dadurch können Sie die reguläre synchrone Syntax verwenden und die Zwischenergebnisse sind im gleichen Umfang verfügbar:
async function myFunction() { const first = await callhttp("172.16.28.200", payload); const second = await callhttp("172.16.28.200", first); const third = await callhttp("172.16.28.200", second); // Access all three results here } myFunction().then(result => {}).catch(error => {});
Das obige ist der detaillierte Inhalt vonWie kann ich Ergebnisse aus mehreren HTTP-Anfragen mithilfe von Bluebird Promises verketten und teilen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!