我有一个简单的心跳进程,它应该永远运行并继续跳动,但我一启动它就死了。
$ node heartbeat.js
Starting heartbeats
$
我的心跳脚本非常简单。
var heartbeats = require('heartbeats');
// tell me that the script is starting
console.log('Starting heartbeats');
// create a heart that beats every second
var heart = heartbeats.createHeart(1000);
// every heartbeat, tell me the beat number
heart.createEvent(1, function(heartbeat, last){
console.log('beat number ' + heart.age);
});
但是在最后添加 process.stdin.resume();
可以使其永远运行:
$ node heartbeat.js
Starting heartbeats
beat number 1
beat number 2
beat number 3
...
为什么要这样做?
最佳答案
heartbeats
为其设置的计时器 ( github ) 调用 .unref
,这意味着它不需要事件循环保持事件状态。
由于您的示例中没有其他监听器,因此它退出。
process.stdin.resume();
使 Node 等待用户的输入,因此进程保持事件状态。
看起来 heartbeats
并不意味着仅让应用程序本身保持事件状态,而是在后台运行。
关于node.js - 为什么我的心跳进程一启动就死掉了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40675789/