JavaScript:如何每隔一小时做一些事情? [英] JavaScript: How to do something every full hour?

查看:138
本文介绍了JavaScript:如何每隔一小时做一些事情?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I want to execute some JS code every hour. But I can't use

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

因为我想每隔一小时做一次,我的意思是在凌晨1点,2点,在3:00等。我在考虑像

because I want to do it every full hour, I mean in 1:00, in 2:00, in 3:00 and so on. I am thinking about something like

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

但它太慢而且效果不好。

but it's too slow and it doesn't work well.

感谢您的任何想法

推荐答案

我会知道现在几点了,弄清楚它会持续多长时间,直到下一个整整一个小时,然后等待那么久。所以,

I would find out what time it is now, figure out how long it is until the next full hour, then wait that long. So,

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 只是为了确保你没有在5毫秒的时间内执行 setTimeout 并让它成为一个疯狂的循环。

The check for e < 100 is just to make sure you don't do setTimeout on something like 5 ms and get it a crazy loop.

这篇关于JavaScript:如何每隔一小时做一些事情?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆