2014-02-12 54 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