在ES6类中调用另一个方法的方法内部的回调

时间:2017-11-20 21:50:51

标签: javascript class ecmascript-6 closures electron

我试图做以下事情。

  listening(randomToken, self) {
    console.log("test");
  }

  startListening(randomToken) {
    let test = caller => {
      this.listening(randomToken, this);
    };

    this.udpSocket.on("listening", test);
  }

我从另一个类调用startListening但是调用了console.log的输出(" test");从不在Chrome控制台中显示。

然而,当我这样做时:

  startListening(randomToken) {
    let test = caller => {
      this.listening(randomToken, this);
    };

    this.udpSocket.on("listening", this.listening(randomToken));
  }

输出显示正确,我得到:

  

未捕获的TypeError:"听众"参数必须是函数

为什么会这样?当然,我可以通过将它包装在try / catch周围来避免显示错误,但有没有更合适的方法来处理它?

修改:我忘了提及即使这样也行不通:

    let test = caller => {
      console.log("test");
    };

    this.udpSocket.on("listening", test);
  }

1 个答案:

答案 0 :(得分:0)

你应该通过'测试'作为一个功能,

this.udpSocket.on("listening", test());