2014-02-12 86 views
0

我有下面的代碼,檢查數組中的每個用戶。如果找到,開關盒將相應地工作。並行執行節點

var users = ["A","B"]; 
function searchUser() { 
for (var j = 0; j < users.length; j++) { 
     execute(users[j]); 
    } 
} 

function execute() { 
switch (selectUser) { 
      case "A": 
      { 
       return new A(); 
       break; 
      } 
      case "B": 
      { 
       return new B(); 
       break; 
      } 
      ............ 
      } 
} 

我該如何讓它平行運行。現在我得到A()和B()的輸出。但我希望它反之亦然。

回答

0

此代碼看起來CPU密集型,可能沒有涉及IO。該節點是單線程模型,因此並行處理不能在單個內核上(對於需要啓動多個節點進程的多個內核)。在單核上,吞吐量只有在涉及到IO時纔會增加。如果你現在的代碼沒有涉及IO,你可能無法獲得任何東西。

1

雖然不能讓它們真正並行運行,但可以使用異步模塊更加異步:https://github.com/caolan/async

+0

我在哪裏應該在代碼中包含異步? – user3180402

+0

如果你想爲'users'數組的每個元素調用'execute',請嘗試類似async.parallel(users.map(function(user){return function(callback){execute(user)};}));您還需要使用npm安裝異步,並調用require('async')' - 請參閱我發送的鏈接中的文檔以獲取詳細信息。 –

+0

var async = require('async'); var users = [「A」,「B」]; function execute(selectUser){ switch(selectUser){ case「A」: { console.log(「Helloo」); 休息; } case「B」: { console.log(「Hiii」); 休息; } } } async.parallel(users.map(功能(用戶){回報函數(回調){執行(用戶)};})) – user3180402