如何在循环中同步运行AJAX(在下一次迭代之前阻塞)
How to run AJAX in a loop synchronously(block before next iteration)?
我希望像下面这样在循环中运行AJAX,但要确保AJAX调用在进行下一个循环迭代之前完成。
for (var i = 1; i < songs.length; i++) {
getJson('get_song/' + i).done(function(e) {
var song = JSON.parse(e);
addSongToPlaylist(song);
});
}
我知道如何在java中使用倒计时或事件监听器来实现这一点,但不知道如何在javascript中做到这一点。
因为我有其他AJAX调用同时进行,所以我不能使用async=false
参数。
你可以这样做。
(function loop(i) {
if(i < songs.length) getJson('get_song/' + i).done(function(e) {
var song = JSON.parse(e);
addSongToPlaylist(song);
loop(i + 1);
});
})(1);
或者你也可以使用Async.jshttps://github.com/caolan/async
相关文章:
- 当接收到AJAX内容时,每次$.的下一次迭代
- 为什么这个 JavaScript switch 语句(在 for 循环内)保留了上一次迭代的值
- 异步mongodb更新循环中最后一次迭代后的重定向
- 如何在当前迭代中获得下一次迭代的值
- 如何重新构建此 for 循环,以便在异步 api 调用完成之前不会进行下一次迭代
- 变量在循环的最后一次迭代中变为未定义
- 对于下一次迭代之前的循环延迟
- 为什么这个简单的.js在一次迭代后循环停止
- 在使用 CasperJS 遍历参数化 URL 时,仅执行最后一次迭代
- 每次单击一次迭代两个数组并制作动画
- Javascript/Angularjs :等待承诺实现,然后再进入foreach Loop中的下一次迭代
- JSTL:如何获取Map的上一次和下一次迭代元素
- 在下一次迭代之前暂停对JSON对象进行迭代
- 如何知道回调循环的哪一次迭代以及何时执行
- Javascript-只用于循环打印最后一次迭代
- 获取jquery each中的最后一次迭代
- 只进行最后一次迭代的循环内函数调用
- 在第一个数组的下一次迭代之前,遍历一个数组并连接另一个数组的所有值
- 在for循环的每一次迭代中都会计算.length属性
- jQuery - 如何滚动浏览子类 addclass 然后在一次迭代中删除类 setTimout 不起作用