AJAX异步响应回调

AJAX asynchronous response callbacks

本文关键字:回调 响应 异步 AJAX      更新时间:2023-09-26

我使用AJAX已经有一段时间了,但使用的方式有限且简单。我使用JQuery

目前我正在调试一个web应用程序。客户端代码使用JavaScript和JQuery。我注意到,在这个应用程序中,可以同时发出多个AJAX请求(一个接一个)。我担心的是,由于AJAX是异步的,AJAX请求可能无法按正确的顺序完成。我想知道是否将执行适当的AJAX回调,无论哪个响应首先返回,或者回调函数以FIFO方式执行

让我详细说明

我有2 AJAX请求A和B。A和B都有自己的回调函数。应用程序首先发出请求A,然后立即发出请求b。现在应用程序期望A首先返回。现在我的问题是如果B先返回。哪个Call back将被执行?

我做了一些研究,没有找到任何关于这个问题的信息。所以我假设浏览器会协调回调。为了确保我写了一个小测试。我的测试表明,无论哪个响应首先返回,总是首先使用第一个请求回调。

我的问题是什么是行为?还有使用什么技术或方法来避免这种情况。

看看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);
    });
});