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

How to run AJAX in a loop synchronously(block before next iteration)?

本文关键字:一次 迭代 循环 同步 运行 AJAX      更新时间:2023-09-26

我希望像下面这样在循环中运行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