顺序执行js

Sequential execution js

本文关键字:js 执行 顺序      更新时间:2023-09-26

我正在开发一个需要以顺序方式处理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);

您还可以使用promise链接ajax调用,如上面的注释所述。