【发布时间】:2013-11-11 11:40:47
【问题描述】:
如果我正在编写一些简单的东西并希望它一直运行直到显式终止,是否有最佳实践来防止脚本终止而不会导致阻塞、使用 CPU 时间或防止回调工作?
我假设那时我需要某种事件循环实现或一种方法来解锁来自其他异步处理程序(网络 io、消息队列)的事件的执行?
一个具体的例子可能类似于“我希望我的节点脚本休眠,直到有作业通过 Beanstalkd 可用”。
【问题讨论】:
如果我正在编写一些简单的东西并希望它一直运行直到显式终止,是否有最佳实践来防止脚本终止而不会导致阻塞、使用 CPU 时间或防止回调工作?
我假设那时我需要某种事件循环实现或一种方法来解锁来自其他异步处理程序(网络 io、消息队列)的事件的执行?
一个具体的例子可能类似于“我希望我的节点脚本休眠,直到有作业通过 Beanstalkd 可用”。
【问题讨论】:
我认为相关的反问题是“您如何检查退出条件?”。
如果您正在轮询 Web 服务,则用于轮询的底层 setInterval() 将使其保持活动状态,直到取消。如果您从流中接收输入,则应该保持它处于活动状态,直到流关闭等。
基本上,您必须监视 某事 才能知道您是否应该退出。监控应该是让脚本保持活力的东西。
【讨论】:
Node.js 在无事可做时结束。
如果你在一个端口上监听,它有事情要做,并且有办法接收beantalk命令,所以它会等待。
创建一个关闭端口的函数,您将显式退出,但它将等待所有当前作业结束后再关闭。
【讨论】: