顺序执行js

Sequential execution js

我正在开发一个需要按顺序处理 ajax 调用的项目。我的代码是这样的:

for(var j=0; j<3;j++) {
                $.ajax({
                    url:url[j],
                    async:false
                }).done(function(result){
                    var data = result.data;
                    for(var i=0; i < data.length;i++){
                        analyses += "<div><div id=\"" + data[i] + "\" class=\"module\">";
                        analyses += "<br/>Analysis : " + data[i] + "<br/>";
                        analyses += "</div></div>";
                        $("#analysesPlaceHolder").html(analyses);
                    }
                });

            }

然而,现在它只是从列表中随机选择 url(有时是第一个,有时不是)。如何使执行按顺序进行,以便代码首先执行第一个 ajax 调用,然后执行第二个等

我不建议在循环中使用 ajax 调用。

这是一个更好的方法,它在 ajax 回调中增加计数,然后触发下一个 ajax 请求:

var urlCount = 0;

var makeAjaxCall = function(count) {
    $.ajax({
        url:url[count],
    }).done(function(result){
        var data = result.data;
        for(var i=0; i < data.length;i++){
            analyses += "<div><div id=\"" + data[i] + "\" class=\"module\">";
            analyses += "<br/>Analysis : " + data[i] + "<br/>";
            analyses += "</div></div>";
            $("#analysesPlaceHolder").html(analyses);
        }

        urlCount++;
        if (urlCount < 3) {
            makeAjaxCall(urlCount);
        }
    });
}

makeAjaxCall(urlCount);

您还可以使用 promises 链接 ajax 调用,如上面的评论所述。