Node.js 节点中的并行执行
我有下面的代码来检查数组中的每个用户。如果找到,开关箱将相应工作Node.js 节点中的并行执行,node.js,asynchronous,parallel-processing,Node.js,Asynchronous,Parallel Processing,我有下面的代码来检查数组中的每个用户。如果找到,开关箱将相应工作 var users = ["A","B"]; function searchUser() { for (var j = 0; j < users.length; j++) { execute(users[j]); } } function execute() { switch (selectUser) { case "A": {
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;
}
............
}
}
var用户=[“A”,“B”];
函数searchUser(){
对于(var j=0;j
我怎样才能使它并行运行。现在我得到A()和B()的输出。但我希望它发生,反之亦然 此代码看起来是CPU密集型代码,可能没有涉及IO。该节点是单线程模型,因此无法在单个核心上进行并行处理(对于多个核心,您需要启动多个节点进程)。在单核上,只有当涉及IO时,吞吐量才会增加。如果您当前的代码没有涉及IO,您可能什么也得不到。尽管您无法使它们真正并行运行,但您可以使用异步模块使其更加异步:。如果您想为
用户
数组的每个元素调用执行
,请尝试类似async.parallel(users.map(function)的方法(user){return function(callback){execute(user)};});您还需要使用npm安装async,并调用require('async')
-有关详细信息,请参阅我发送的链接中的文档。var async=require('async');var users=[“A”,“B”];函数执行(selectUser){switch(selectUser){case“A”:{console.log(“Helloo”);break;}case“B”:{console.log(“Hiii”);break;}}}}}异步.parallel(users.map(函数(用户){返回函数(回调){execute(用户)};}),但我得到的结果是“Helloo”,“Hiii”