我有一个客户端对象数组,所以我使用for循环来迭代它 我有clients.lenght = 2,但它只迭代1.我在这里没有变量范围问题。只是不明白它为什么会发生。 的代码
socket.on('idleDisconnectAllClient', function(receivedData) {
LOG("idleDisconnectAllClient");
var clientIndex = findMainIndexByDataBaseID(receivedData.dataBaseID);
if (clientIndex != -1) {
console.log('clients lenght', clients[clientIndex].data.length);
for (var i = 0; i < clients[clientIndex].data.length; i++) {
var client = clients[clientIndex].data[i];
client.disconnect();
console.log('client ' + i);
}
}
});
控制台
2016-03-29 04:13:01 - idleDisconnectAllClient
clients lenght 2
client 0
答案 0 :(得分:1)
jpaljasma - https://stackoverflow.com/users/2079695/jpaljasma 帮助我理解这个问题。
当我使用 - client.disconnect()时,它只是从客户端数组中删除当前客户端。这就是为什么我的循环只进行了一次。
答案 1 :(得分:0)
您可以通过ES5 forEach
构造进行迭代:
clients[clientIndex].data.forEach(client => client.disconnect())
(免责声明,这使用来自ES6的胖箭头,可能不适用于较旧的节点版本)