簡體   English   中英

AJAX異步響應回調

[英]AJAX asynchronous response callbacks

我一直在使用AJAX一段時間,但是有限且簡單。 我使用JQuery

目前我正在調試一個Web應用程序。 客戶端代碼使用JavaScript和JQuery。 我注意到在這個應用程序中,可以同時發送多個AJAX請求(一個接着一個)。 我擔心的是,因為AJAX是異步的,所以AJAX請求可能無法以正確的順序完成。 我想知道是否會執行正確的AJAX回調而不管回復是先返回還是回調函數以FIFO方式執行

讓我詳細說明一下

我有2個AJAX請求A和B.A和B都有自己的回調函數。 應用程序首先發出請求A然后立即發出請求B.現在應用程序期望A先返回。 現在我的問題是如果B先退回怎么辦? 哪個回叫將被執行?

我做了一些研究,但在這個問題上找不到任何信息。 所以我假設瀏覽器會協調回調。 為了確保我寫了一點測試。 我的測試表明,無論哪個響應首先返回,第一個請求回調總是先使用。

我的問題是行為是什么? 還使用什么技術或方法來避免這種情況。

查看jQuery promise / deferred對象,它們允許您控制這種確切的行為。

$.when( $.ajax("test.aspx") ).then( $.ajax("test2.aspx") );

http://api.jquery.com/category/deferred-object/

正如您所描述的那樣 - 如果請求B首先返回,那么將首先調用其回調。

當第一個ajax請求超過時,您總是可以調用第二個ajax請求,例如:

function callbackA() { return true; }
function callbackB() { return true; }

$.ajax({url: '/my/url', data: {mydata: mydata}, success: function(data) {
      callbackA(data);
      $.ajax({url: '/my/url2', data: {mydata2: mydata2}, success: function(data) {}
          callbackB(data);
    });
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM