2016-10-01 37 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