Вот подход, который зависит от динамического интервала. Следующая функция будет установить тайм-аут в зависимости от того, сколько времени осталось до полного часа:
function getDelay(){
var date = new Date();
var hour = date.getMinutes();
return (60 - hour) * 60 * 1000; //get the milliseconds until the next full hour
}
delay = getDelay();
var dynamicInterval = function(){
clearInterval(interval); //stop the current interval
delay = getDelay();
interval = setInterval(dynamicInterval, delay); //set the new interval with the new delay
}
var interval = setInterval(dynamicInterval, delay); //initial start of the interval
Demo
Примечание: демо сделки с секунд, а не минут.
Я забыл один '0', это' 60000' (одна минута), каждую минуту он проверяет, является ли это новым часом (минуты = 0), 'flipIt()' вызывается только один раз в часах на 'xx: 00' –