Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在不按用户刷新页面的情况下每整小时更新一次变量?_Javascript_Php_Jquery - Fatal编程技术网

Javascript 如何在不按用户刷新页面的情况下每整小时更新一次变量?

Javascript 如何在不按用户刷新页面的情况下每整小时更新一次变量?,javascript,php,jquery,Javascript,Php,Jquery,控制器: $number = rand(1, 100); 视图: 您的幸运号码:。 如何在不手动刷新页面的情况下每小时更新$number的值?我可以使用JavaScript/jQuery中的setInterval,但我希望在整小时(0:00、1:00、2:00等)使用它。最好的方法是什么?我可以使用PHP、CRON、JS和JS框架…试着找出现在是几点,计算到下一个整小时还有多长时间,然后等待那么长时间: function doSomething() { var d = new Da

控制器:

$number = rand(1, 100);
视图:


您的幸运号码:。

如何在不手动刷新页面的情况下每小时更新
$number
的值?我可以使用JavaScript/jQuery中的
setInterval
,但我希望在整小时(0:00、1:00、2:00等)使用它。最好的方法是什么?我可以使用PHP、CRON、JS和JS框架…

试着找出现在是几点,计算到下一个整小时还有多长时间,然后等待那么长时间:

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(May be an ajax call to show lucky num)
}

检查e<100只是为了确保不要在5毫秒之类的时间上设置超时,让它变成一个疯狂的循环。

试着找出现在是几点,计算到下一个整小时的时间,然后等待那么长时间:

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(May be an ajax call to show lucky num)
}

检查e<100只是为了确保不要在5毫秒之类的时间上设置超时,并使其成为一个疯狂的循环。

这里有一个解决方案

var d=新日期();
var firstTrigger=60000*(60-d.getMinutes());
//这是第一次触发
setTimeout(函数(){
日志(“第一次触发”,rand(1100));
//这是每整小时连续触发一次
setInterval(函数(){
log(“每小时连续触发”,rand(1100));
}, 3600000);

},第一触发器)给你一个解决方案

var d=新日期();
var firstTrigger=60000*(60-d.getMinutes());
//这是第一次触发
setTimeout(函数(){
日志(“第一次触发”,rand(1100));
//这是每整小时连续触发一次
setInterval(函数(){
log(“每小时连续触发”,rand(1100));
}, 3600000);

},第一触发器)你想使用Ajax,我知道,但如何在全天工作时更改它?我不想在整小时内启动我的应用程序来启动setInterval。我只是好奇,这需要用于哪个用例?JavaScript不可能精确计时。你能做的最好的事情就是为每分钟(或更少)设置一个时间间隔,并检查你是否达到了小时标记。如果你想使用Ajax,我知道如何在整小时内改变它?我不想在整小时内启动我的应用程序来启动setInterval。我只是好奇,这需要用于哪个用例?JavaScript不可能精确计时。你能做的最好的事情就是为每分钟(或更少)设定一个时间间隔,并检查你是否达到了小时标记