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

Javascript jQuery在ajax成功后继续循环执行,javascript,jquery,ajax,dom,Javascript,Jquery,Ajax,Dom,我有一个循环中的jQuery ajax调用。但是,我不希望同时进行这些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: functi

我有一个循环中的jQuery ajax调用。但是,我不希望同时进行这些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
            }
        });
}
for(var i=0;i
我希望循环仅在成功执行DOM操作之后才继续执行(因为ajax调用依赖于DOM树)。
理论上,我知道我可以将ajax调用设置为async:false,但不建议这样做,因为它会冻结浏览器。

您可以这样做(伪代码):


async
设置为false将完成此操作。请记住,如果异步执行请求,则在请求发生时,web浏览器可能会锁定

jQuery.ajax({
    async : false,
    url: "ajax_file.php",
    data: //some data based on DOM tree
    success: function(data){
        //some DOM manipulation
    }
});

因为
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);
            }
        });
    }
};
var recur\u loop=函数(i){
var num=i | | 0;//如果设置了i,则使用i,否则使用0
if(num
这看起来像是某种奇怪的递归。。。但到目前为止,它似乎很有魅力!伟大的解决方案,我一直在寻找!谢谢你救了我的命。
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);
            }
        });
    }
};