我已经编写了一个NodeJS应用程序,该应用程序仅在工作日的特定时间调用API并发布到端点。如何让我的NodeJS应用程序永远运行在循环中
我可以设置一个cron作业来在指定的时间运行应用程序,但是我宁愿使用node index.js
来运行它,并让它运行不断,直到正确的日期和时间才会运行,然后返回到“睡眠“直到第二天。
我该如何做到这一点?我尝试了一段时间循环:
while (true) {
myApp.run();
}
很明显,这并没有太好。
什么是正确的做法?我是否应该重写我的模块以使用事件,以便在时间到时发出一个事件,并且有一个响应它的侦听器?
--edit:为了更具体一些,我希望它以类似的方式运行,其中包含一个Web服务器的应用程序。当你启动应用程序时,它正在运行并等待连接;它在连接结束时请求&不会退出,它仍在运行,正在等待更多请求&连接。
--edit 2:我宁愿不使用cron的原因是因为运行的日期和时间可以在应用程序解析的config.json
文件中配置。我宁愿避免与cron
混淆,只需通过编辑config.json
文件来更改计划。
- 编辑3:我想自己编码而不使用模块。当我试图编写一个永久运行的应用程序时,我的大脑总是很痛,我想了解它是如何完成的,而不是使用模块。
--edit 4:这里是我最终使用:
function doStuff() {
// code to run
};
function run() {
setInterval(doStuff, 30000);
};
run();
没有太多的节点人,但我想它有某种你可以设置的计时器。我会使用其中之一。 –
我喜欢cron或类似[resque](https://github.com/taskrabbit/node-resque)这样的工作计划程序会更好。你总是可以使用['setInterval'](https://nodejs.org/api/timers.html#timers_setinterval_callback_delay_arg) –
你可以得到当前的日期和时间,然后计算下一次你想要的时间调用你的API。然后在调用'setTimeout()'或'setInterval()'(如上面的Nick Tomlin所述)时使用该时间间隔 – RJM