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