我有一个包含音频文件的数组,可以一一播放。
我使用的是JavaScript播放器,它将播放音频并在完成后提供回调。

for (i = 0; i < audioFiles.length; i++) {
    PlayAudio(audioFiles[i], function(){
        alert('complete file #' + i);
    });
}

但是现在我的问题是,如何一步一步地做到这一点。上面的代码片段将启动几个音频文件并并行播放。什么是等待触发回调的最佳解决方案?

最佳答案

有很多解决方案。等待直到回调触发似乎是一个很好的解决方案。

function playAudioFile(index) {
  PlaidAudio(audioFiles[index], function () {
    var next = index + 1;
    if (next < audioFiles.length) {
      playAudioFile(index+1);
    }
  });
}

function playAudioFiles() {
  playAudioFile(0);
}

边注:

如果您正在寻找一种更通用的串行运行任务的方法,则应查看Promise hereherehere(尽管最后一篇文章仅适用于AngularJS)。

10-07 17:21