2016-03-29 13 views
1

私はオブジェクトのクライアント配列を持っているので、繰り返しのためにループを使用します。 clients.lenght = 2ですが、iteratesは1です。 。なぜそれが起こるのか分かりません。 コードforループは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

私はコンソールの答えを投稿。それは2 – SLI

+1

を試してください 'var clientsLen = clients [clientIndex] .data.length;'を試し、あなたのループを 'var i = 0; i jpaljasma

+0

それは役に立ちます!ありがとうございました。 – SLI

答えて

1

jpaljasma - https://stackoverflow.com/users/2079695/jpaljasma は私が問題を理解するのに役立ちます。

私は--client.disconnect()を使うと、現在のクライアントをクライアント配列から削除するだけです。だから、なぜ私のループは1回だけ実行されたのか。

0

あなたはES5 forEach構造を経由して反復することができます:

clients[clientIndex].data.forEach(client => client.disconnect()) 

(免責事項は、これは古いノードのバージョンでは動作しない場合があります、ES6から脂肪の矢印を使用しています)

関連する問題