hourlyRefresh(function (hour) { console.log('执行整点计划 =>', hour) }) function hourlyRefresh (callback) { var date, hour, minute, second, readyHour; setInterval(function () { date = new Date() hour = date.getHours() minute = date.getMinutes() second = date.getSeconds() console.log('当前时间:' + hour + ':' + minute + ':' + second) if(minute === 0) { if(!readyHour) { readyHour = true; callback(hour) } } else { readyHour = false; } }, 1000) }
不是有setTimeout。打开页面的时候,计算一次距离整点还有多久,设置定时器回调。触发一次后,重复”计算、设置回调“这个过程。当然如果严谨点,第一次打开,应该检查是否刚好落在整点上,是则先触发一次回调。
数据应该与相应的显示是绑定的,这个可以自动刷新的真实数据的获取可以通过定时器等触发来定时获取,因为你需要整点刷新,所以我猜这个整点应该是服务器整点,则定时器的处理就可以从获取服务器时间(标记,需要服务器数据中有反映),然后和本地时间比较,产生一个合适的定时器,后续也是类似,每次刷新后重新设置定时器。