我有一个函数,它使用 setTimeout() 每 3 分钟 24/7 运行一次。问题在于它从每月最多请求的 API 获取数据。我想尽可能多地运行它,但由于浪费请求,当我睡觉时没有必要这样做。此外,如何只能在例如 06:30:00 和 20:00:00 之间运行我的脚本?
你需要 setTimeout 和 Date() 来实现这一点:例如
var now = new Date();
var millisTill10 = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 10, 0, 0, 0) - now;
if (millisTill10 < 0) {
millisTill10 += 86400000; // it's after 10am, try 10am tomorrow.
}
setTimeout(function(){alert("It's 10am!")}, millisTill10);
有关更多详细信息,请遵循此内容
我已经测试并验证了以下代码。我的是晚上 7:22,它属于这些时间,它执行得很好。
// get todays strict timings
// 06:30:00 and 20:00:00
setInterval(function() {
lowerDate = new Date();
lowerDate.setHours(6);
lowerDate.setMinutes(30);
lowerDate.setSeconds(0);
upperDate = new Date();
upperDate.setHours(20);
upperDate.setMinutes(0);
upperDate.setSeconds(0);
todayDate = new Date();
if (todayDate > lowerDate && todayDate < upperDate)
console.log("execute"); // execute only if in between these times
}, 3 * 60 * 1000) //Every 3 minutes