我想在循环中运行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
参数。
提前致谢。
答案 0 :(得分:3)
你可以这样做。
(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.js https://github.com/caolan/async