如果我有一个全局数组:
var users = new Array();
我想在所有客户中保持这个阵列:
socket.on('connect', function() {
users.push(socket.id);
});
socket.on('disconnect', function() {
users.splice(users.indexOf(socket.id), 1);
});
如果我有其他功能怎么办:
socket.on('new_score', function(s) {
for (u in users) {
...
do some processing
...
io.sockets.connected[users[u]].emit('new_score', socket.id, s);
...
do some processing
...
}
});
由于socket.io是异步的,所以当我在最后一个函数中调用emit时,用户可能已经断开连接。
所以我需要一种安全访问数组的方法,所有这些其他函数异步操作它...
答案 0 :(得分:1)
如果整个for
循环是同步的(或者不依赖于异步函数的结果),则无需担心。
整个循环将以相同的“tick”处理,任何消息(如disconnect
)将在刻度结束时处理。