JS并没有为我们提供整点方法,但我们知道,在JS里有setTimeout和setInterval方法,可以在一定延时后执行指定的代码。我们需要自己写一个函数来实现整个事件。
怎么确保函数在整点执行?
使用setTimeout方法和Date函数同步时间。
var myDate = new Date();
var myDateS = myDate.getSeconds()*1000;
var myDateMs = myDate.getMilliseconds();//获取到毫秒以减少误差
setTimeout(function () {
//函数
},60000-myDateS-myDateMs);
上面的代码可以在下一分钟0s开始执行里面的函数,如果需要整时就用3600000减去当前的时分秒毫秒。
如果需要在每个整点都执行这个函数,你可以递归使用这个方法来让每个整点执行某个函数,但是这样做无疑会消耗许多性能。我们需要将递归范围限制在我们自己的函数范围里
function myFunc() {
//函数
setTimeout(function () {
myFunc();
},60000);//因为是在0s开始执行,所以60s后又是一个整点
}
结合一下,添加一个报时功能
var myDate = new Date();
var myDateS = myDate.getSeconds();
var myDateMs = 1000-myDate.getMilliseconds();
setTimeout(function () {
myFunc();
},60000-myDateS-myDateMs);
function myFunc() {
console.log("整分了!");
setTimeout(function () {
myFunc();
},60000);
}
一个整点报时程序就完成了!
注意:使用alert会暂停定时器。