📜  Node.js 处理消息事件

📅  最后修改于: 2022-05-13 01:56:31.807000             🧑  作者: Mango

Node.js 处理消息事件

“消息”是进程模块中 Process 类的事件,每当子进程接收到父进程使用childprocess.send()发送的消息时,就会发出该事件。

句法:

Event: 'message'

参数:此事件不接受任何参数作为参数。

返回值:此事件只返回一个回调函数以供进一步操作。

示例 1:

文件名是 index.js

Javascript
// Node.js program to demonstrate the 
// Process 'message' Event
 
// Importing process module
const cp = require('child_process');
 
// Initiating child process
const process = cp.fork(`${__dirname}/sub.js`);
 
// Causes the child to print:
// CHILD got message: { hello: 'world' }
process.send({ hello: 'world' });


Javascript
// Importing process module
const process = require('process');
 
// Message Event
process.on('message', (m) => {
    console.log('CHILD got message:', m);
    process.exit(0)
});


Javascript
// Node.js program to demonstrate the 
// Process 'message' Event
 
// Importing process module
const cp = require('child_process');
 
// Initiating child process
const process = cp.fork(`${__dirname}/sub.js`);
 
// Message Event
process.on('message', (m) => {
    console.log('PARENT got message:', m);
});
 
// Causes the child to print:
// CHILD got message: { hello: 'world' }
process.send({ hello: 'world' });


Javascript
// Importing process module
const process = require('process');
 
// Message Event
process.on('message', (m) => {
    console.log('CHILD got message:', m);
    process.exit(0)
});
 
// Causes the parent to print:
// PARENT got message: { foo: 'bar', baz: null }
process.send({ foo: 'bar', baz: NaN });


这里的文件名是 sub.js

Javascript

// Importing process module
const process = require('process');
 
// Message Event
process.on('message', (m) => {
    console.log('CHILD got message:', m);
    process.exit(0)
});


使用以下命令运行index.js文件:

node index.js

输出:

CHILD got message: { hello: 'world' }

示例 2:

文件名是 index.js

Javascript

// Node.js program to demonstrate the 
// Process 'message' Event
 
// Importing process module
const cp = require('child_process');
 
// Initiating child process
const process = cp.fork(`${__dirname}/sub.js`);
 
// Message Event
process.on('message', (m) => {
    console.log('PARENT got message:', m);
});
 
// Causes the child to print:
// CHILD got message: { hello: 'world' }
process.send({ hello: 'world' });

这里的文件名是 sub.js

Javascript

// Importing process module
const process = require('process');
 
// Message Event
process.on('message', (m) => {
    console.log('CHILD got message:', m);
    process.exit(0)
});
 
// Causes the parent to print:
// PARENT got message: { foo: 'bar', baz: null }
process.send({ foo: 'bar', baz: NaN });

使用以下命令运行index.js文件:

node index.js

输出:

CHILD got message: { hello: 'world' }
PARENT got message: { foo: 'bar', baz: null }

参考: https://nodejs.org/dist/latest-v16.x/docs/api/process.html#process_event_message