Verkettung asynchroner Aufrufe mit jQuery-Versprechen
Asynchrone Programmierung in JavaScript ermöglicht die Ausführung von Code, ohne die Benutzeroberfläche zu blockieren. Um dies zu erreichen, werden häufig Versprechen verwendet, um den Datenfluss zu verwalten und sicherzustellen, dass Aufgaben in einer bestimmten Reihenfolge ausgeführt werden.
Im gegebenen Szenario möchten Sie drei asynchrone HTTP-Aufrufe nacheinander ausführen. Sie haben eine Teillösung bereitgestellt, die zwei Funktionen mit verzögerten Versprechen umfasst. Um es auf drei Funktionen zu erweitern, vertiefen wir uns in das Kernkonzept.
Gibt in jeder Funktion, die eine asynchrone Anfrage initiiert, das von $.ajax() zurückgegebene jqXHR-Objekt zurück. Diese jqXHR-Objekte sind Promise-kompatibel, was bedeutet, dass sie einfach mit .then(), .done(), .fail() oder .always() verkettet werden können.
In diesem Fall .then( ) ist am besten geeignet, da Sie damit die drei Anrufe verbinden und Daten von einem zum anderen weitergeben können. Das folgende Codebeispiel veranschaulicht die vollständige Lösung:
<code class="javascript">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); }</code>
Die Argumente data, textStatus und jqXHR werden an jede nachfolgende Funktion aus dem $.ajax()-Aufruf des vorherigen Aufrufs übergeben. Dadurch können Sie Daten von first() an second() und von second() anthird() übergeben und so sicherstellen, dass die Aufrufe synchron ausgeführt werden und die Daten nahtlos zwischen ihnen fließen.
Sie können auch verwenden eine Hilfsfunktion wie $.when('foo'), um während des Testens oder während der Entwicklung Ihrer Lösung ein erfülltes Versprechen anstelle von $.ajax(...) zu liefern.
Das obige ist der detaillierte Inhalt vonWie kann ich mit jQuery Promises drei asynchrone HTTP-Aufrufe nacheinander ausführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!