将arugments传递给回调函数

时间:2017-11-22 09:56:37

标签: javascript function callback arguments

我试图将一个参数传递给一个回调函数,它实际上允许传递参数但是会抛出一个随机错误,说明回调函数中的变量没有定义。

这是功能:

function trackLoader(track) { 
    myPlayer[0] = new Tone.Player("Audio/" + track + ".wav", callBack);
}

这是回调函数:

function callBack() {
   myPlayer[0].loop = true;
   myPlayer[0].sync();
   myPlayer[0].start();
}

从上面可以看出,我只想将播放器的索引传递给回调函数。提前谢谢,马特

2 个答案:

答案 0 :(得分:1)

Tone.Player会在没有参数的情况下调用你的回调函数。你可以给它一个匿名函数,用你想要的索引来调用回调。

function trackLoader(track) {
   const index = 0;

   myPlayer[index] = new Tone.Player('Audio...wav', () => callBack(index));
}
function callBack(index) {
   myPlayer[index].loop = true;
   myPlayer[index].sync();
   myPlayer[index].start();
}

PS:我认为Tone.Player会在出现错误时回调特殊数据。你一定要检查一下。

答案 1 :(得分:-2)

我建议将变量设为全局,它应该可以工作,但我不太确定这将是最好的解决方案。

var myPlayer;

function trackLoader(track) {
  myPlayer[0] = new Tone.Player("Audio/" + track + ".wav", callBack);
}

function callBack() {
  myPlayer[0].loop = true;
  myPlayer[0].sync();
  myPlayer[0].start();
}