Heim >Web-Frontend >js-Tutorial >Wie können Sie drei asynchrone Aufrufe in jQuery mithilfe von Promises verketten und dabei Daten von einem Aufruf zum nächsten weitergeben?
Verketten von drei asynchronen Aufrufen mit jQuery-Versprechen
In dieser Frage untersuchen wir ein Szenario, in dem Sie drei asynchrone HTTP-Anfragen in einem stellen müssen synchron, und Sie müssen Daten von einem Anruf zum nächsten weitergeben.
Erster Ansatz:
Wie in der Frage erwähnt, haben Sie versucht, Verzögerungen für zu verwenden Die ersten beiden Funktionen. Das war ein guter Anfang, aber er deckte nur den Fall von zwei Funktionen ab. Die Erweiterung auf drei Funktionen erfordert einen etwas anderen Ansatz.
Verkettung mit JqXHR-Objekten:
Der Schlüssel zur Verkettung mehrerer asynchroner Aufrufe besteht darin, das von $ zurückgegebene jqXHR-Objekt zurückzugeben .ajax() in jeder Funktion. Diese Objekte sind Promise-kompatibel und können mit .then()/.done()/.fail()/.always() verkettet werden.
Aktualisierter Code:
function first() { return $.ajax(...); } function second(data, textStatus, jqXHR) { return $.ajax(...); } function third(data, textStatus, jqXHR) { return $.ajax(...); } function main() { first().then(second).then(third); }
In diesem aktualisierten Code gibt die Funktion first() das jqXHR-Objekt aus ihrem AJAX-Aufruf zurück, das dann als Argument an die Funktion second() übergeben wird. Die Funktion „second()“ wiederum gibt ihr jqXHR-Objekt zurück, das an die Funktion „dritte()“ übergeben wird.
Übergabe von Daten zwischen Funktionen:
Die Argumentdaten , textStatus und jqXHR ergeben sich aus dem $.ajax()-Aufruf in der vorherigen Funktion. Das bedeutet, dass first() second() speist und second() Third() speist. Daher können Sie diese Argumente verwenden, um Daten von einer Funktion zur nächsten zu übergeben.
Demo:
Der folgende Code demonstriert die Verkettung von drei asynchronen Aufrufen mithilfe von jQuery-Versprechen . Es verwendet $.when('foo'), um ein erfülltes Versprechen anstelle von $.ajax(...) zu liefern.
function first() { return $.when('foo'); } function second(data) { return $.when('bar' + data); } function third(data) { return $.when('baz' + data); } first().then(second).then(third) .done(function(data) { console.log(data); // Logs "bazbarfoo" });
Das obige ist der detaillierte Inhalt vonWie können Sie drei asynchrone Aufrufe in jQuery mithilfe von Promises verketten und dabei Daten von einem Aufruf zum nächsten weitergeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!