問題描述
setTimeout 一天中的特定時間,然後停止直到下一個特定時間 (setTimeout for specific hours of day and then stop until next specific time)
我正在運行以下代碼,作為我想要說功能“tweeter”的更廣泛代碼的一部分。全天在 09.00、13.00、17.00 和 21.00 運行。
但是,當我運行代碼時,它會正確等待“小時”。然後它將繼續運行該函數,而不是停止並等待檢查下一個小時是否匹配。
我希望它遵循的工作流程是
- 運行每小時的代碼
- 如果小時匹配 9、13、17 或 21,則運行函數
- 停止運行直到下一個小時檢查
- 重複 1‑2
<div class="snippet" data‑lang="js" data‑hide="false" data‑console="true" data‑babel="false">
參考解法
方法 1:
you can use a cron job like this check the doucmentation
var CronJob = require('cron').CronJob;
var job = new CronJob('0 0 9,13,17,21 * * *', function() {
tweeter();
}, null, true, 'America/Los_Angeles');
job.start();
方法 2:
Went with a tidied up solution to run every three hours instead of on specific hour. Did go with cron.schedule at the end which is working as expected:
var cron = require('node‑cron');
cron.schedule('0 0‑21/3 * * *', () => {
tweeter();
});
(by DT7、Mohammad Yaser Ahmadi、DT7)