首頁  >  文章  >  web前端  >  如何使用 jQuery Promises 連結非同步呼叫並在它們之間傳遞資料?

如何使用 jQuery Promises 連結非同步呼叫並在它們之間傳遞資料?

Linda Hamilton
Linda Hamilton原創
2024-10-30 14:52:02625瀏覽

How to Chain Asynchronous Calls and Pass Data Between Them with jQuery Promises?

使用 jQuery Promises 連結非同步呼叫

如何使用 jQuery Promises 連結三個非同步呼叫並在它們之間傳遞資料?

當處理需要順序執行的三個 HTTP 呼叫時,請考慮利用 jQuery Promise 來連結呼叫並促進資料傳輸。

最初,嘗試對兩個函數使用延遲物件會產生部分解決方案。然而,將此方法擴展到三個函數需要不同的策略。

連結呼叫並傳遞資料

在每個呼叫中,傳回 $.ajax 產生的 jqXHR 物件()。這些物件遵循 Promise 接口,可以使用 .then()/.done()/.fail()/.always() 進行連結。

<code class="javascript">function first() {
   return $.ajax(...);
}

function second(data, textStatus, jqXHR) {
   return $.ajax(...);
}

function third(data, textStatus, jqXHR) {
   return $.ajax(...);
}</code>

在主函數中,將函數連結為.then() 如下:

<code class="javascript">function main() {
    first().then(second).then(third);
}</code>

傳遞給後續函數的data、textStatus 和jqXHR 參數源自前面函數中的$.ajax() 呼叫。這允許每個函數存取和利用前一個呼叫的輸出。

出於說明目的,下面的演示使用 $.when('foo') 而不是 $.ajax(...) 來提供已履行的承諾。

<code class="javascript">function main() {
    $.when('foo').then(second).then(third);
}</code>

透過以這種方式連結承諾並傳遞數據,您可以同步有效地執行三個非同步呼叫。

以上是如何使用 jQuery Promises 連結非同步呼叫並在它們之間傳遞資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn