Heim > Artikel > Web-Frontend > Wie verkettet man asynchrone Aufrufe und übergibt Daten zwischen ihnen mit jQuery-Versprechen?
Wie kann ich drei asynchrone Aufrufe mit jQuery-Versprechen verketten und Daten zwischen ihnen übergeben?
Wenn Sie mit drei HTTP-Aufrufen arbeiten, die nacheinander ausgeführt werden müssen, sollten Sie die Verwendung von jQuery-Versprechen in Betracht ziehen, um die Aufrufe zu verketten und die Datenübertragung zu erleichtern.
Der Versuch, verzögerte Objekte für zwei Funktionen zu verwenden, führt zunächst zu einer Teillösung. Die Ausweitung dieses Ansatzes auf drei Funktionen erfordert jedoch eine andere Strategie.
Verketten Sie die Aufrufe und übergeben Sie Daten
Geben Sie bei jedem Aufruf das von $.ajax generierte jqXHR-Objekt zurück (). Diese Objekte folgen der Promise-Schnittstelle und können mit .then()/.done()/.fail()/.always() verkettet werden.
<code class="javascript">function first() { return $.ajax(...); } function second(data, textStatus, jqXHR) { return $.ajax(...); } function third(data, textStatus, jqXHR) { return $.ajax(...); }</code>
Verketten Sie die Funktionen innerhalb der Hauptfunktion mit .then() wie folgt:
<code class="javascript">function main() { first().then(second).then(third); }</code>
Die an nachfolgende Funktionen übergebenen Daten-, TextStatus- und jqXHR-Argumente stammen aus dem $.ajax()-Aufruf in der vorhergehenden Funktion. Dadurch kann jede Funktion auf die Ausgabe des vorherigen Aufrufs zugreifen und diese nutzen.
Zur Veranschaulichung verwendet eine Demo unten $.when('foo') anstelle von $.ajax(...), um eine bereitzustellen erfülltes Versprechen.
<code class="javascript">function main() { $.when('foo').then(second).then(third); }</code>
Durch die Verkettung der Versprechen und die Weitergabe von Daten auf diese Weise können Sie die drei asynchronen Aufrufe synchron und effektiv ausführen.
Das obige ist der detaillierte Inhalt vonWie verkettet man asynchrone Aufrufe und übergibt Daten zwischen ihnen mit jQuery-Versprechen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!