Node.js 进程消息事件
“message”是进程模块内部的Process类的一个事件,每当父进程发送的消息通过childprocess.send()被子进程接收时就会发出。
语法:
Event: 'message'
参数: 此事件不接受任何参数。
返回值: 此事件除了回调函数以外没有返回值,用于进一步操作。
示例1:
文件名是index.js。
// 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' });
这里的文件名是sub.js
// 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
// 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
// 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