如何并行运行所有功能
How to run all functions in parallel
我正在张贴下面的一段代码,这是"非异步函数"
var flag = false;
function a() {
var a = 0;
for (var i = 0; i < 10000000; i++) {
a++;
}
console.log("first fun finished!");
flag = true;
};
function b() {
var a = 0;
for (var i = 0; i < 10000000; i++) {
a++;
}
console.log("second fun finished!");
};
function c() {
var a = 0;
for (var i = 0; i < 10000000; i++) {
a++;
}
console.log(a)
};
a();
b();
console.log("This should be good");
if (flag) { //Should wait for this value before c() is called
c();
console.log("third fun finished!")
}
如果我们运行上面的例子,这应该是好的,c()函数,将不得不等待,直到a()和b()函数将完成工作。我期待所有的功能应该并行运行(多线程(异步)函数)。有谁可以帮助我如何使用nodejs实现它
使用承诺。all或Promise.join.
var Promise = require('bluebird');
return Promise.join(Promise.resolve().then(a),
Promise.resolve().then(b),
Promise.resolve().then(c),
function(){console.log('complete')});
就像评论中提到的那样,您可以使用child_process
或cluster.fork
。下面是一个简单的child_process.spawn
实现:
(如果您不想使用eval,那么将这些函数写在单独的文件中并调用它们)
var spawn = require('child_process').spawn
...
spawn('node',['-e', '('+a.toString()+')()']) // send the function as string and evaluate in node
.stdout.on('data', console.log.bind(console))
.on('close',function(){
//call c() when a() ended
c()
})
.setEncoding('utf8')
spawn('node',['-e', '('+b.toString()+')()'])
.stdout.on('data', console.log.bind(console))
.setEncoding('utf8')
相关文章:
- '.在'单击“不运行”功能
- 流星 - 观察自动运行功能内未运行
- on点击不运行功能??(可能是Javascript错误?)
- 加载检查单选按钮值并运行功能
- 如何在浏览器中完成图像大小调整后运行功能?(JS/JQuery)
- 在IE中下载文件时运行功能
- 应用程序关闭前的离子运行功能
- 离子选项卡在选择后运行功能
- 检查URL和运行功能
- Chrome扩展赢得't点击按钮运行功能
- 检查时间差是否小于45分钟,并运行功能-AngularJS
- 对输入更改和复选框更改运行功能
- 如何运行功能与参数点击
- 混淆自动运行功能
- 选择按钮运行功能
- 运行功能按钮点击作为创建者用户-谷歌电子表格
- 离子应用程序运行功能在第二次点击
- 谷歌图表-运行功能后绘制
- 具有对焦运行功能的按钮在'输入'
- Onchange选择运行功能