如何在socket.io中locking全局数组

如果我有一个全局数组:

var users = new Array(); 

我想在所有的客户中维持这个arrays:

 socket.on('connect', function() { users.push(socket.id); }); socket.on('disconnect', function() { users.splice(users.indexOf(socket.id), 1); }); 

如果我有另一个function呢?

 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是asynchronous的,在我最后一个函数发出的时候,用户可能已经被断开连接。

所以我需要一种方法来安全地访问数组与所有这些其他functionasynchronous操纵它…

如果整个for循环是同步的(或不依赖于asynchronous函数的结果),那么您无需担心。

整个循环将在同一个“打勾”中处理,任何消息(如disconnect )将在打勾结束时处理。