JavaScript:如何每隔整整一小时做点什么?

新手上路,请多包涵

我想每小时执行一些 JS 代码。但是我不能用

setInterval("javascript function",60*60*1000);

因为我想每隔整整一小时做一次,我的意思是在 1:00、2:00、3:00 等等。我在想类似的事情

var d;
while(true) {
  d = new Date();
  if ((d.getMinutes() == '00') && (d.getSeconds() == '00')){
    // my code here
  }
}

但它太慢了,而且效果不佳。

谢谢你的任何想法

原文由 matlos 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 283
1 个回答

我会找出现在几点,弄清楚下一个完整小时还有多长时间,然后等那么久。所以,

 function doSomething() {
    var d = new Date(),
        h = new Date(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours() + 1, 0, 0, 0),
        e = h - d;
    if (e > 100) { // some arbitrary time period
        window.setTimeout(doSomething, e);
    }
    // your code
}

e > 100 检查只是为了确保你不做 setTimeout 大约 5 毫秒并进入疯狂循环。

原文由 Heretic Monkey 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题