等待多个AJAX请求在循环中完成

时间:2015-07-20 16:03:54

标签: javascript jquery ajax

我的问题: 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并延迟了,但是这些都不会阻止下一次迭代开始,直到它完成了它需要做的所有请求。

我需要的东西是下一次迭代等待第一次迭代完成的一种方式。

0 个答案:

没有答案