我可以每 60 秒运行一次函数:
Timer: function() {
setInterval(fxn, 60000)
},
但是有没有办法在每分钟轮到运行一个函数?IE 在 11:20:00、11:21:00 等?
我可以每 60 秒运行一次函数:
Timer: function() {
setInterval(fxn, 60000)
},
但是有没有办法在每分钟轮到运行一个函数?IE 在 11:20:00、11:21:00 等?
你可以这样做setTimeout()
:
function onTheMinute(fn) {
function ms() {
var now = new Date();
return (60 - now.getSeconds()) * 1000;
}
function timer() {
fn();
setTimeout(timer, ms());
}
setTimeout(timer, ms());
}
这会在下一分钟的边界上设置一个超时,并在发生这种情况时调用一个函数。每次都会为下一分钟设置一个新的计时器。
检查毫秒也会稍微准确一些,但无论如何计时器都不是那么准确。
在下一分钟轮流编程您的计时器的第一次执行,然后设置每分钟的间隔。
(function () {
var nextExecution = ((60 - (new Date()).getSeconds()) * 1000),
fnx = function () {
document.getElementById("sec").innerHTML = (new Date()).getMinutes();
};
setTimeout(function () {
fnx();
setInterval(fnx, 60 * 1000);
}, nextExecution)
}());