You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js使用fork时如何实现子进程等待父进程发送数据?

Node.js fork 子进程等待父进程消息实现方案

现有代码问题

  • process.on('message')是异步事件注册逻辑,不会阻塞同步代码执行。你写的同步形式wait_and_listen函数注册完监听后会直接返回temp_data,此时父进程消息还未到达,变量值为undefined,运算结果不符合预期。
  • 子进程同步代码会直接执行到process.exit(),等不到父进程的两次消息就会提前退出。

修正方案

将消息监听逻辑封装为Promise,用异步流程等待两次消息到达后再执行运算和结果返回,父进程代码无需修改,子进程index2.js修改如下:

let a = 0;

// 封装单次消息监听Promise,收到消息后直接resolve
function wait_and_listen() {
  return new Promise(resolve => {
    // 用once仅监听一次消息,避免重复注册监听导致内存泄漏
    process.once('message', data => resolve(data));
  });
}

// 异步自执行函数处理等待逻辑
(async () => {
  a += await wait_and_listen();
  a -= await wait_and_listen();
  process.send(a);
  process.exit();
})();

运行代码后3秒左右控制台会输出结果20,符合预期效果。

内容的提问来源于stack exchange,提问作者user15573857

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 11:36:08