为什么音频在提示后执行?
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 的单线程性质,我假设音频是 运行 异步的,这是由于对音频长度的假设。
我的音频很短,只有一个词。我希望它们在提示打开之前完成。
您可以监听 audio
的 onended
事件并在回调中执行操作。
示例:
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);
}
}
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 的单线程性质,我假设音频是 运行 异步的,这是由于对音频长度的假设。
我的音频很短,只有一个词。我希望它们在提示打开之前完成。
您可以监听 audio
的 onended
事件并在回调中执行操作。
示例:
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);
}
}