我做了类似
的事情setInterval(function() {
console.log("!");
}, 1000 * 60 * 60);
我想每小时运行console.log
,但代码并不像我想要的那样工作。
我们说我在1:30运行代码,然后它会在2:30运行console.log
。但我想做的是每小时运行一次代码。比如1点,2点,3点。
有没有办法做到这一点?谢谢!
答案 0 :(得分:1)
这应该这样做:
let millisPerHour = 60 * 60 * 1000; // use 5 * 1000 (every 5 seconds) for testing
let millisPastTheHour = Date.now() % millisPerHour;
let millisToTheHour = millisPerHour - millisPastTheHour;
let fn = function() {
console.log("Running at " + new Date());
}
setTimeout(function() {
fn();
setInterval(function() {
fn();
}, millisPerHour);
}, millisToTheHour);
我正在使用setTimeout()
和setInterval()
的组合。首先,我计算直到下一个小时(millisToTheHour
)的毫秒数,然后我使用超时来执行该函数并启动一个每小时继续执行它的间隔。