我得到了一个socket.io客户机,其中onMessage
回调应该调用handleResponse()
来处理接收到的数据。
我这样附加回调:
this.socket.on("message", this._socketOnMessage);
回调的实现方式如下:
_socketOnMessage(data) {
this.handleResponse();
}
这是handleResponse()
handleResponse() {
console.log("handling response");
}
我可以从任何地方调用handleResponse()
,它工作正常,但是当从套接字回调调用时,我得到这个错误:
Uncaught (in promise) TypeError: this.handleResponse is not a function
handleResponse()
在回调中为undefined
,但在其他位置为function
为什么会出现此错误,如何修复?
2条答案
按热度按时间6l7fqoea1#
听起来
handleResponse
不是套接字管理器的函数。只需调用handleResponse()
而不是this.handleResponse()
。oxf4rvwz2#
因此,解决方案很简单:
_socketOnMessage
函数内部的作用域是WebSockets
。随后this
引用WebSocket
对象,而不是套接字所在的父类。所以要调用
handleResponse
,它也是父类的函数,必须像这样调用:parentObject.handleResponse()