Heim  >  Artikel  >  Web-Frontend  >  Wie können Sie drei asynchrone Aufrufe in jQuery mithilfe von Promises verketten und dabei Daten von einem Aufruf zum nächsten weitergeben?

Wie können Sie drei asynchrone Aufrufe in jQuery mithilfe von Promises verketten und dabei Daten von einem Aufruf zum nächsten weitergeben?

DDD
DDDOriginal
2024-11-01 13:56:29152Durchsuche

How can you chain three asynchronous calls in jQuery using Promises, passing data from one call to the next?

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!

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