Почему звук воспроизводится после подсказки? - PullRequest
3 голосов
/ 21 января 2020
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 я предполагаю, что звук запускается асинхронно из-за предположения о длине звука.

Мои аудио очень короткие, они содержат только одно слово. Я хочу, чтобы они были закончены до того, как откроется приглашение.

1 Ответ

2 голосов
/ 21 января 2020

Вы можете прослушать onended событие audio и выполнить действие в обратном вызове.

Пример:


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);
   }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...