我已經編寫了一個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