首頁 > web前端 > js教程 > 主體

如何使用 Promises 在 jQuery 中連結三個非同步調用,將資料從一個調用傳遞到下一個調用?

DDD
發布: 2024-11-01 13:56:29
原創
150 人瀏覽過

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

使用jQuery Promises 連結三個非同步呼叫

在這個問題中,我們探討了一個場景,其中您要在一個同步方式,而您需要將資料從一次呼叫傳遞到

初始方法:

正如問題中提到的,您嘗試對前兩個函數使用延遲。這是一個好的開始,但它只涵蓋了兩個函數的情況。將其擴展到三個函數需要稍微不同的方法。

與 JqXHR 物件連結:

連結多個非同步呼叫的關鍵是傳回 $ 傳回的 jqXHR 物件每個函數中的 .ajax() 。這些物件與 Promise 相容,可以使用 .then()/.done()/.fail()/.always() 進行連結。

更新的程式碼:

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);
}
登入後複製

在此更新的程式碼中,first() 函數從其AJAX 呼叫返回jqXHR 對象,然後將其作為參數傳遞給第二個()函數。第二個()函數依序傳回其 jqXHR 對象,該物件被傳遞給第三個()函數。

在函數之間傳遞資料:

參數資料、textStatus 和 jqXHR 由上一個函數中的 $.ajax() 呼叫產生。這意味著first() 提供第二個(),第二個() 提供第三個()。因此,您可以使用這些參數將資料從一個函數傳遞到下一個函數。

示範:

下面的程式碼示範了使用 jQuery Promise 連結三個非同步呼叫。它使用 $.when('foo') 來代替 $.ajax(...).

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"
  });
登入後複製
來交付已履行的承諾。

以上是如何使用 Promises 在 jQuery 中連結三個非同步調用,將資料從一個調用傳遞到下一個調用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!