jQuery在ajax成功后继续循环执行
jQuery continue loop execution after ajax success
我有一个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
}
});
}
我希望循环仅在执行了SUCCESS中的DOM操作之后才继续执行(因为ajax调用依赖于DOM树)。理论上我知道我可以将ajax调用设置为async:false,但不建议这样做,因为它可能会冻结浏览器。
因为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);
}
});
}
};
将async
设置为false将做到这一点。请记住,如果您异步执行请求,web浏览器可能会在请求发生时锁定。
jQuery.ajax({
async : false,
url: "ajax_file.php",
data: //some data based on DOM tree
success: function(data){
//some DOM manipulation
}
});
你可以这样做(伪代码):
var i =0;
doLoop();
function doLoop() {
//exit condition
if (i >= options.length) {
return;
}
//loop body- call ajax
$.ajax({
//...
success: function(data) {
//do your thing
i++;
//go to next iteration of the loop
doLoop();
}
});
}
相关文章:
- 如何让foreach循环等待$http.get完成后再继续
- 试图使循环退出,但它目前只是继续循环100次
- JavaScript:如何在 for 循环期间跳过数组中的当前项目?(继续?
- 如果我不这样做会发生什么;t有页码吗?继续循环帖子..为什么需要分页,对于页脚
- 在执行时间循环中使用继续
- 在继续循环之前完成设置超时
- 防止在 jquery ajax 直到加载时继续循环
- 柔性滑动器2在一个方向上继续循环而不工作
- 我怎样才能让旋转木马继续循环
- 中断条件以继续循环
- 在继续循环之前,获取要完成的回调
- 如何使滑块在元素结束时继续循环(如何包裹滑块)
- 如何使我的滑块继续循环
- 只有当异步获取请求完成时,才能继续循环
- 在函数调用中中断或继续循环
- jQuery在ajax成功后继续循环执行
- 等待AJAX完成后再继续循环
- jquery.each在继续循环之前等待函数完成
- jQuery 在 ajax 结束时继续循环
- 为什么这段代码继续循环?