为什么音频在提示后执行?

Why is the audio executed after the prompt?

function myTimer() {
    randint= Math.floor(Math.random() * 10)+1;
    randstimuli=gorilla.stimuliURL(dict[randint]);
    var audio = new Audio(randstimuli);
    audio.play();
    var start=Date.now();
    var ans=prompt("was the last number the same as the one two steps ago");
    console.log(Date.now()-start);
}

我有这个功能,我在其中播放声音并通过提示向用户提问。当我 运行 时,功能声音会在回答提示后立即播放,即使音频在代码中提示之前也是如此。由于 Javascript 的单线程性质,我假设音频是 运行 异步的,这是由于对音频长度的假设。

我的音频很短,只有一个词。我希望它们在提示打开之前完成。

您可以监听 audioonended 事件并在回调中执行操作。

示例:


function myTimer() {
   randint = Math.floor(Math.random() * 10) + 1;
   randstimuli = gorilla.stimuliURL(dict[randint]);
   var audio = new Audio(randstimuli);
   audio.play();
   audio.onended = function () {
      var start = Date.now();
      var ans = prompt("was the last number the same as the one two steps ago");
      console.log(Date.now() - start);
   }

}