AJAX 异步响应回调函数

3

我已经使用AJAX一段时间了,但是只是在有限和简单的情况下。我使用JQuery

目前,我正在调试一个Web应用程序。客户端代码使用JavaScript和JQuery。我注意到在这个应用程序中,可以同时发送多个AJAX请求(一个接着一个)。我的担忧是因为AJAX是异步的,所以AJAX请求可能不会按正确的顺序完成。我想知道无论哪个响应首先返回或回调函数是否以FIFO方式执行,都会执行正确的AJAX回调。

让我解释一下

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

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

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

2个回答

4

2

根据您所描述的流程,如果请求B先返回,则它的回调函数将首先被调用。

例如,当第一个请求成功时,您始终可以调用第二个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);
    });
});

仔细想想,这可能是最直接的解决方案。 - Deets McGeets

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接