AJAX异步响应回调

AJAX异步响应回调

问题描述:

我一直在使用AJAX一段时间,但以有限和简单的方式。我使用JQueryAJAX异步响应回调

目前我正在调试一个Web应用程序。客户端代码使用JavaScript和JQuery。我注意到,在这个应用程序中,可以同时发送多个AJAX请求(一个接一个地发送)。我担心的是,因为AJAX是异步的,AJAX请求可能无法按正确的顺序完成。我回呼功能在FIFO方式执行第一想知道,如果适当的AJAX回调将巫不分响应的执行被退货或

让我解释

我有2个AJAX请求A和B的一和B有自己的回叫功能。应用程序首先发出请求A,然后立即发出请求B.现在,应用程序期望A首先返回。现在我的问题是如果B首先返回什么。哪个回叫将被执行?

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

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

看看jQuery承诺/延期对象,它们允许你控制这个确切的行为。

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

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

+0

+1,这是伟大的东西。更多文档:http://api.jquery.com/jQuery.when/ –

+0

http://www.erichynds.com/jquery/using-deferreds-in-jquery/ – BNL

如你所描述的流 - 如果请求B首先返回,那么它的回调将被首先调用。

您可以随时拨打第二个AJAX请求时,第一个suceed,例如:

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); 
    }); 
}); 
+0

第二个想法是,这可能是最直接的解决方案。 –