jQuery在ajax成功后继续循环执行

Nat*_*n H 3 javascript ajax jquery dom

我在循环中有一个jQuery ajax调用.但是我不希望同时进行那些ajax调用,我需要先进行ajax调用才能完成下一个调用.

for (var i = 0; i < options.length; i++) {  
        jQuery.ajax({
            url: "ajax_file.php",
            data: //some data based on DOM tree
            success: function(data){
                //some DOM manipulation
            }
        });
}
Run Code Online (Sandbox Code Playgroud)

我希望循环只有在执行SUCCESS中的DOM操作后继续执行(因为ajax调用依赖于DOM树).从理论上讲,我知道我可以将ajax调用设置为async:false,但不建议这样做,因为它可以冻结浏览器.

bin*_*ous 7

因为async: false总是一个坏主意,我建议这样的事情:

var recur_loop = function(i) {
    var num = i || 0; // uses i if it's set, otherwise uses 0

    if(num < options.length) {
        jQuery.ajax({
            url: "ajax_file.php",
            data: //some data based on DOM tree
            success: function(data){
                recur_loop(num+1);
            }
        });
    }
};
Run Code Online (Sandbox Code Playgroud)