2016-10-01 7 views
0

Node.jsでsocket.ioを使用します。Node.jsのメインスレッドをブロックする条件はありますか?

var rooms = {"a", "b"}; 
io.on('connection', function(client) { 
    socket.on('room', function(room) { 
     if(room in rooms){ 
      socket.join(room); 
     } 
    }); 
}); 

...Code below... 

条件以下のメインスレッドとプロセスブロックされます:私は意味

if(room in rooms){ 
      socket.join(room); 
     } 

を、以下のプロセスであれば、上に起因条件待つコーディングのだろうか?

答えて

0

コードには、メインスレッドを待つかブロックするものは何もありません。 io.on()socket.on()の両方がイベントハンドラをインストールしているだけです。あなたのJavascriptの残りの部分は引き続き実行され、それらのイベントハンドラは、関連付けられているイベントが発生したときに、将来、ある時間呼び出されます。

条件:

if(room in rooms){ 

は、そのコードが実行され、直ちに実行される瞬間に評価されます。それは何もブロックするのを待つことはありません。

あなたが解決しようとしている実際の問題が何かを教えてくれたら、おそらくあなたを助けることができます。

+0

条件やコードの一部がメインスレッドをブロックする可能性がある場合は、この状況が発生する可能性がある場合を理解する必要があります。 – Babaev

+0

@Babaev - すでに述べたように、あなたが示したコードのどれもがメインスレッドをブロックしていません。 – jfriend00

+0

@Babaev - これがあなたの質問に答えた場合は、答えの左側にある緑のチェックマークをクリックしてコミュニティにその旨を明記してください。そうでない場合は、あなたの現在の質問のどの部分がまだ答えられていないかを説明してください。 – jfriend00

関連する問題