【问题标题】:How do I pass a variable from parent to forked child process?如何将变量从父进程传递给分叉的子进程?
【发布时间】:2022-01-15 04:16:44
【问题描述】:

我的父进程这样分叉子进程:

child = new fork('child.js');

现在在我的父进程中,我有一个包含数组的变量。我想将此数组传递给子进程,因此我尝试将变量作为消息发送给子进程:

//in parent.js
var jData = ['pro1', 'pro2', 'pro3']
child.send({'koota': jData})
//


//in child.js
process.on('koota', (jData) => {
    console.log(jData + ' from child!')
})
//

但是,这不起作用。有什么方法可以将数组传递给孩子,以便我可以使用它的内容?

【问题讨论】:

    标签: node.js electron


    【解决方案1】:

    使用 process.on('message', () => {})receive messages,它们是 sentchild.send({})

    改编自链接的文档页面(已缩短,完整示例参见原文):

    const { fork } = require('child_process');
    const child = fork('child.js'); // no need for 'new'
    const jData = ['pro1', 'pro2', 'pro3'];
    child.send({'koota': jData});
    

    child.js:

    process.on('message', (msg) => {
        if (msg.koota) {
            console.log(msg.koota, 'from child!');
        }
    });
    

    您目前正在使用process.on(<a custom name, not "message">)。您可以简单地检查您在事件处理程序中收到的消息的“类型”:

    process.on('message', (msg) => { 
      if (msg.koota) {
        // ...
      }
    })
    

    发送{type: 'koota', data: {}} 之类的消息可能看起来会更好 (if(msg.type === 'koota') {...})。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多