ajax 调用返回一个 jQuery Promise 对象。您可以在一个数组中收集每个的输出,并使用$.when
将这些承诺“捆绑”在一起。
此代码是您想要的基本思想:
function main() {
var finished = false;
var defs = [];
for(var i=0; i < 3; i++) {
defs.push(do(i));
}
$.when.apply(null, defs).done(function() {
//this code will only run when all ajax calls are complete
});
}
function do(i) {
var promise = $.ajax({
url:"myurl.com/"+i,
datatype:"text/xml",
success: function() {
// Two more layers of multiple nested $.ajax elements here
}
})
return promise;
}
浏览器可以有很多开放的 HTTP 连接,不要让反对者说服你。这是浏览器支持的最大并发连接表。让您的网站使用统计数据成为您的指南,但即使是一次 2 个 ajax 请求也比完全同步的数据请求更快......
Firefox 2: 2
Firefox 3+: 6
Opera 9.26: 4
Opera 12: 6
Safari 3: 4
Safari 5: 6
IE 7: 2
IE 8: 6
IE 10: 8
Chrome: 6