从子进程调用setTimeout(NodeJS)

时间:2014-02-18 15:19:52

标签: javascript node.js

我想使用子进程通过setTimeout调用一个函数,该进程可能在setTimeout发生之前退出。

1)我假设如果子进程调用该函数(即使它是在外部定义的),如果子进程退出,则会取消setTimeout。这是对的吗?

2)如果是这样,让子进程发信号通知父进程来执行setTimeout是否可行,或者是否有更好的方法来实现它?

谢谢!

1 个答案:

答案 0 :(得分:0)

我不确定我是否完全理解,但让我提供一些可能适用的链接和示例。

使用child.send / process.send作为child_process模块​​和群集的一部分,可以在主进程和子进程之间发送和接收消息。

例如,当子进程向主服务器发送消息时清除setTimeout:

var cp = require('child_process');
var child = cp.fork(__dirname + '/sub.js');

var timer = setTimeout(function(){
  console.log('timed out'); 
}, 5000);

child.on('message', function(msg) {
  console.log(msg);
  clearTimeout(timer);
});

孩子

setTimeout(function() {
  console.log('finished doing some long task');
  process.send({ status: 'done' });
}, 3000); // set this to something larger than 5000ms to see the timeout

您可能还对exitclose事件感兴趣,以便子进程执行类似操作。

相关问题