gpt4 book ai didi

javascript - 更新 Socket.IO 回调中的变量

转载 作者:行者123 更新时间:2023-12-01 02:21:25 25 4
gpt4 key购买 nike

如何在 socket.io 回调中更新 this._arr 数组?

class SocketClass{

constructor(server) {
this._arr = [];
this._io = require('socket.io').listen(server);
this._initListeners();
}

_initListeners() {
this._io.on('connection', (socket, arr) => {
socket.on('event1', (data) => {
this._arr.push(data);
});

});
}

}

问题是 this._arr 在回调中未定义。我想这是因为 this 引用了回调函数本身......

最佳答案

如何在 socket.io 回调中更新 this._arr 数组?

最简单的方法是使用 that = this 编码风格捕获对象的范围..

ps。虽然箭头函数用于保持范围,但我仍然认为从长远来看,that = this 更容易、更灵活……因为你也可以做更具体的事情。例如.. thisSocketClassthisEvent 等..

例如..

class SocketClass{

constructor(server) {
this._arr = [];
this._io = require('socket.io').listen(server);
this._initListeners();
}

_initListeners() {
const that = this;
this._io.on('connection', (socket, arr) => {
socket.on('event1', (data) => {
that._arr.push(data);
});
});
}
}

关于javascript - 更新 Socket.IO 回调中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49192427/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com