javascript onMessagesocket.io处理程序中未定义JS www.example.com函数

8aqjt8rx  于 2023-01-29  发布在  Java
关注(0)|答案(2)|浏览(161)

我得到了一个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
为什么会出现此错误,如何修复?

6l7fqoea

6l7fqoea1#

听起来handleResponse不是套接字管理器的函数。只需调用handleResponse()而不是this.handleResponse()

oxf4rvwz

oxf4rvwz2#

因此,解决方案很简单:
_socketOnMessage函数内部的作用域是WebSockets。随后this引用WebSocket对象,而不是套接字所在的父类。
所以要调用handleResponse,它也是父类的函数,必须像这样调用:
parentObject.handleResponse()

相关问题