Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – 分叉子进程并注入依赖关系大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_419_1@
我目前在一个阻塞的模块中有一个操作,所以我正在虑把它变成一个我代替的子进程.

如果我想这样做,那么我当然需要修改我的模块的架构.该模块要求通过将模块作为函数调用来注入依赖项,并传入依赖项,如下所示:

var dependency = { name: "Bob" }
require('worker')(dependency)

然后在我的工人模块中:

@H_650_8@module.exports = function (dependency) { // Outputs { name: "Bob" } console.log(dependency) }

如何将此示例转换为分叉的子进程?

解决方法

使用.fork()时,您正在启动一个完全独立的进程,因此您无法在父进程和子进程之间传递引用(并且仅限于创建进程后的消息传递).

不需要消息传递的方法是在分叉进程时传递参数(在数组中).然我相信你必须坚持使用简单的字符串/数字值(但看起来这对你来说可能已经足够了).例如.:

在顶层:

var name = 'bob'
var args = [name];
var childProcess = require('child_process').fork(__dirname + '/worker',args);

工作过程中:

var name = process.argv[2]; //AFIAK elements 0 and 1 are already populated with env info

更新

如果你真的想要去消息传递路径(如果你已经需要发送消息我会犹豫推荐),那么你可以区分这样的消息类型(可能有更优雅的方式):

在顶层:

var childProcess = require('child_process').fork(__dirname + '/worker');
childProcess.send({msgtype:'dependencies',content:dependencies});

//Then to send 'normal' message:
childProcess.send({msgtype:'myothermessagetype',content:'some content'}

工作过程中:

process.on('message',function(msg){
    if(msg.mtype == 'dependencies') {
       var dependencies = msg.content;
       //Do something with dependencies
    } else if(msg.mtype == 'myothermessagetype') {
       var normalmessage = msg.content;
       //Do something in response to normal message.
    }
});

大佬总结

以上是大佬教程为你收集整理的node.js – 分叉子进程并注入依赖关系全部内容,希望文章能够帮你解决node.js – 分叉子进程并注入依赖关系所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。