我一直在使用AJAX一段时间,但是以有限和简单的方式。我使用JQuery
目前我正在调试一个Web应用程序。客户端代码使用JavaScript和JQuery。我注意到在这个应用程序中,可以同时发送多个AJAX请求(一个接着一个)。我担心的是,因为AJAX是异步的,所以AJAX请求可能无法以正确的顺序完成。我想知道是否会执行正确的AJAX回调而不管回复是先回复还是回调函数以FIFO方式执行
让我详细说明
我有2个AJAX请求A和B.A和B都有自己的回调函数。应用程序首先发出请求A然后立即发出请求B.现在应用程序期望A先返回。现在我的问题是如果B先退回怎么办?哪个回叫将被执行?
我做了一些研究,但在这个问题上找不到任何信息。所以我假设浏览器会协调回调。为了确保我写了一点测试。我的测试表明,无论哪个响应首先返回,第一个请求回调总是先使用。
我的问题是这是什么行为?还使用什么技术或方法来避免这种情况。
答案 0 :(得分:4)
查看jQuery promise / deferred对象,它们允许您控制这种确切的行为。
$.when( $.ajax("test.aspx") ).then( $.ajax("test2.aspx") );
答案 1 :(得分:2)
正如您所描述的那样 - 如果请求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);
});
});