Javascript:如何在每个“时间”运行计时器;“圆形”;x秒?

Javascript:如何在每个“时间”运行计时器;“圆形”;x秒?,javascript,html,Javascript,Html,我需要每5秒运行一次javascript计时器,但只有这样,当当前时间为“舍入”5秒时(我的意思是当第二个值可被5整除时)。因此,我想将开始时间设置为“舍入”5秒 不好,当第二个是(例如):7、12、17、22等 好:0,5,10,15等等 我的当前代码(每5秒运行一次,但开始时间未设置为“舍入”5秒): setInterval(函数(){ draw(); }, 5000); 请帮帮我。您可以每1秒执行一次循环,以检查getUTCMinutes()/5==0的模数是否为,一旦为0,则执行脚本

我需要每5秒运行一次javascript计时器,但只有这样,当当前时间为“舍入”5秒时(我的意思是当第二个值可被5整除时)。因此,我想将开始时间设置为“舍入”5秒

不好,当第二个是(例如):7、12、17、22等

好:0,5,10,15等等

我的当前代码(每5秒运行一次,但开始时间未设置为“舍入”5秒):


setInterval(函数(){
draw();
}, 5000);

请帮帮我。

您可以每1秒执行一次循环,以检查getUTCMinutes()/5==0的模数是否为
,一旦为0,则执行脚本。。因此,它将在5分钟标记处开始,然后自己继续..

您可以每1秒执行一次循环,以检查getUTCMinutes()的模数是否
,/5==0
,一旦执行,然后执行脚本。。因此,它将在5分钟标记处开始,然后自行继续。

使用递归
setTimeout
s,它测量从现在到下一个“四舍五入”秒数之间的时间:

const scheduleDraw=()=>{
const now=新日期();
const secondsToNext=5-(now.getSeconds()%5);
常量millissecondstonext=((secondsToNext-1)*1000)+(1000-now.getmillises());
设置超时(绘图,毫秒/秒/秒);
};
常量绘图=()=>{
console.log('drawing at',new Date());
scheduleDraw();
};

scheduleDraw()改用递归
设置超时
s,它测量从现在到下一个“四舍五入”秒数之间的时间:

const scheduleDraw=()=>{
const now=新日期();
const secondsToNext=5-(now.getSeconds()%5);
常量millissecondstonext=((secondsToNext-1)*1000)+(1000-now.getmillises());
设置超时(绘图,毫秒/秒/秒);
};
常量绘图=()=>{
console.log('drawing at',new Date());
scheduleDraw();
};

scheduleDraw()获取实际日期并提取秒*1000和毫秒。模5.000从最后的5s间隔中得到ms,减去5.000,你就得到了第一个开始。
第一次开始时使用
setTimeout
,之后每5.000毫秒使用
setInterval

let date=新日期();
让ms=date.getSeconds()*1000+date.getmillizes();
让起动=5000-(毫秒%5000);
//控制台日志(ms,启动);
setTimeout(函数(){
doIt();
设置间隔(doIt,5000);
},开始);
函数doIt(){
控制台日志(“Boom”);

}
获取实际日期并提取秒*1000和毫秒。模5.000从最后的5s间隔中得到ms,减去5.000,你就得到了第一个开始。
第一次开始时使用
setTimeout
,之后每5.000毫秒使用
setInterval

let date=新日期();
让ms=date.getSeconds()*1000+date.getmillizes();
让起动=5000-(毫秒%5000);
//控制台日志(ms,启动);
setTimeout(函数(){
doIt();
设置间隔(doIt,5000);
},开始);
函数doIt(){
控制台日志(“Boom”);

}
我们的想法是使用一个函数读取系统时间,并确定下一个5秒的剩余时间,并触发相应的
设置超时

不过,您应该允许几毫秒的变化:

函数callAt5(回调){
让我们现在=新日期();
设milli=(now.getmillizes()+1000*now.getSeconds())%5000;
setTimeout(callAt5.bind(null,callback),5000毫秒;
如果(毫<100)回调();
}
//在每5秒标记处传递要执行的回调:

callAt5(()=>console.log(新日期))
这个想法是要有一个函数来读取系统时间,并确定接下来5秒的剩余时间,并触发相应的
设置超时

不过,您应该允许几毫秒的变化:

函数callAt5(回调){
让我们现在=新日期();
设milli=(now.getmillizes()+1000*now.getSeconds())%5000;
setTimeout(callAt5.bind(null,callback),5000毫秒;
如果(毫<100)回调();
}
//在每5秒标记处传递要执行的回调:

callAt5(()=>console.log(新日期))同步到什么基线?用户的本地时钟秒数?(请记住,这可能不准确)或其他,如自pageload以来的时间,或服务器的时间?当前GMT是根据谁确定的时间?用户的本地时钟或服务器(或外部时间API)?时区应该是egal,因为我们只需要秒而不是小时。同步到什么基线?用户的本地时钟秒数?(请记住,这可能不准确)或其他,如自pageload以来的时间,或服务器的时间?当前GMT是根据谁确定的时间?用户的本地时钟或服务器(或外部时间API)?时区应该是合法的,因为我们只需要秒而不是小时。代码示例会很好,我不是JavaScription专家,我们不是来为您做这项工作的。。而是帮助您解决代码错误。如果你自己尝试研究这个,你会学到更多,而不是一个现成的代码示例…代码示例会很好,我不是JavaScription方面的专家,我们不是来为你做这项工作的。。而是帮助您解决代码错误。如果你自己尝试研究这一点,你会学到更多,而不是一个现成的代码示例…CertainPerformance and Sascha:你的代码给出了我想要的结果。我明天会申请其中一个。可以接受两个答案吗?CertainPerformance和Sascha:你的代码给出了我想要的结果。我明天会申请其中一个。可以接受两个答案吗?CertainPerformance和Sascha:你的代码给出了我想要的结果。我明天会申请其中一个。可以接受2个ans吗
<script type="text/javascript">
        window.setInterval(function(){
        draw();
        }, 5000);
</script>