node.js - 为什么我的心跳进程一启动就死掉了?

标签 node.js events

我有一个简单的心跳进程,它应该永远运行并继续跳动,但我一启动它就死了。

$ 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/

相关文章:

node.js - rethinkdb谷歌计算引擎断开连接

node.js - 如何从 npm 发布的模块中导入流注解、类型和接口(interface)

javascript - 使用 passport.js、sails.js 和 sails 生成身份验证保护页面

javascript - 窗口焦点事件 ctrlkey 未定义

excel - 如何阻止 Excel 在 Workbook_BeforeSave 之前触发 Worksheet_Change?

javascript - 在 Node.JS 中使用 HTTP 读取文件

javascript - 将 Node 请求或 axios 与流一起使用来下载和解压缩文件未按预期处理背压?

c# - 事件优先级和流程顺序

javascript - 获取多选中最后单击的选项

c# - 在加载所有项目并将其显示在ListView中后,将触发哪个事件?