我的问题: AJAX请求相互干扰,即使我没有使用全局变量,像folderlist这样的变量似乎包含它们不应包含的项。如果我将async设置为false,则问题就会消失,但这很糟糕,因为它会让最终用户认为页面被锁定了。
在一次迭代中属于folderList的项目显示在不同的迭代中,不应该在那里。
for (var g = 0; g < args['url'].length; g++) {
var folderList = [];
var url = args['url'][g];
var serverUrl = args['url'][g];
$.getJSON(url + "?f=pjson", function (json) {
for (var key in json.folders) {
folderList[key] = url + "/" + json.folders[key];
}
}).done(function () {
for (var i = 0; i < folderList.length; i++) {
secondAjaxCall(folderList[i], serverUrl);
}
})
}
function secondAjaxCall() {
$.getJSON(url + "?f=pjson", function (json) {
}).done(function (json) {
for (var i = 0; i < json.whatever.length; i++) {
thirdAjaxCall();
}
我查看了jquery when并延迟了,但是这些都不会阻止下一次迭代开始,直到它完成了它需要做的所有请求。
我需要的东西是下一次迭代等待第一次迭代完成的一种方式。