【发布时间】:2017-11-20 21:50:50
【问题描述】:
我正在尝试执行以下操作。
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));
}
输出显示正确,但是我明白了:
未捕获的类型错误:“listener”参数必须是函数
为什么会这样?当然,我可以通过将它包裹在 try/catch 周围来避免显示错误,但是有没有更合适的方法来处理这个问题?
编辑:我忘了说即使这样也行不通:
let test = caller => {
console.log("test");
};
this.udpSocket.on("listening", test);
}
【问题讨论】:
-
所以看起来
updSocket.on从未调用回调?它从何而来?你确定它触发了listening事件吗? -
嘿!感谢您的回复,我实例化了一个名为 ClientController 的类,然后从一个 React 组件(我在电子应用程序中使用)中,我在 onClick 事件上触发了 clientController.startListening() 方法。
标签: javascript class ecmascript-6 closures electron