小编use*_*364的帖子

如何将node.js模块作为node.js程序的子进程执行?

这是我的问题.作为node.js模块,我实现了一个执行大量计算的小脚本.因此,如果我输入"node myModule.js",它会计算一秒钟,然后返回一个值.现在,我想从我的主Node.JS程序中使用该模块.我可以将所有计算放在"doSomeCalculation"函数中然后执行:

var myModule = require("./myModule");
myModule.doSomeCalculation();
Run Code Online (Sandbox Code Playgroud)

但这会阻塞,因此它会很糟糕.我想以非阻塞的方式使用它,例如本地的数据库调用.所以我尝试使用child_process.spawn和exec,如下所示:

var spawn = require("child_process").spawn;
var ext = spawn("node ./myModule.js", function(err, stdout, stderr) { /* whatevs */ });
ext.on("exit", function() { console.log("calculation over!"); });
Run Code Online (Sandbox Code Playgroud)

但是,当然,它不起作用.我试图在myModule中使用EventEmitter,发出"calculateDone"事件并尝试在上面的示例中的"ext"变量上添加关联的侦听器.仍然无法正常工作.

至于分叉,它们并不是我想要做的.Forks需要将与计算相关的代码放在主程序中,在父进行任何操作的同时在子进行分叉,计算,然后如何返回结果?

所以这是我的问题:当计算放在Node文件中时,我可以使用子进程进行非阻塞计算,还是只是不可能?我应该在Python脚本中进行繁重的计算吗?在这两种情况下,我如何将参数传递给子进程 - 例如,图像?

nonblocking node.js

51
推荐指数
1
解决办法
4万
查看次数

标签 统计

node.js ×1

nonblocking ×1