如何使用JS每小时运行代码?

时间:2017-01-20 06:25:27

标签: javascript node.js momentjs

我做了类似

的事情
setInterval(function() {
   console.log("!");
   }, 1000 * 60 * 60);

我想每小时运行console.log,但代码并不像我想要的那样工作。

我们说我在1:30运行代码,然后它会在2:30运行console.log。但我想做的是每小时运行一次代码。比如1点,2点,3点。

有没有办法做到这一点?谢谢!

1 个答案:

答案 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)的毫秒数,然后我使用超时来执行该函数并启动一个每小时继续执行它的间隔。