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"));
答
如你所描述的流 - 如果请求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
第二个想法是,这可能是最直接的解决方案。 –
+1,这是伟大的东西。更多文档:http://api.jquery.com/jQuery.when/ –
http://www.erichynds.com/jquery/using-deferreds-in-jquery/ – BNL