如何在循环中同步运行AJAX(在下一次迭代之前阻塞)?

时间:2015-09-12 20:27:53

标签: javascript jquery ajax asynchronous

我想在循环中运行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参数。

提前致谢。

1 个答案:

答案 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