0

В настоящее время я пытаюсь реализовать систему, в которой вызван обратный вызов из прослушивателя событий (код ниже). Когда я запускаю код, я получаю сообщение об ошибке «callback is not a function», который, как я полагаю, связан с тем, что обратный вызов переменной не определяется исполнителем событий.Обратный вызов Javascript в прослушивании событий

function playSound(no, callback) { 
var noOfSounds = sound().length; 
if(no == "random" || no == undefined) { 
    act("There are "+noOfSounds+" Sounds"); 
    var randomNo = Math.floor(Math.random() * noOfSounds); 
    act("Will use no."+randomNo); 
    playSound(randomNo); 
} else { 
    sound()[no].addEventListener("ended", function() { 

     callback(); 

    }); 
    sound()[no].play(); 
}} 
+1

Вы не передали функцию обратного вызова при вызове 'playSound (randomNo);' – Tushar

+0

Извините, я должен уточнить, я вызываю функцию playSound из другой функции при возникновении этой ошибки, я не беспокоюсь о вызове изнутри (я добавлю некоторую логику позже, чтобы определить, прошел ли обратный вызов). TL; DR: эта ошибка все еще возникает, если передается обратный вызов. – user3060689

+2

вам нужно показать нам больше кода. Например, когда вы вызываете функцию playound и функцию обратного вызова, которую вы передаете. – Unlockedluca

ответ

0

Я думаю, что ваша проблема заключается в том, как вы вызываете функцию. Если я смотрю на линии 10 вы говорите

playSound(randomNo) 

Это должно быть

playSound(randomNo, function(){ 
    //code to execute in callback 
}); 

Это потому, что вы вызываете пытаетесь использовать функцию обратного вызова, которая является функцией и должна быть добавлена ​​к входных параметров при вызове метод.

Смежные вопросы