要求:按照15分钟刷新但是必须是当前时间为参考:例如现在是33分钟下一次刷新的时间是12分钟 第二次以后就是15分钟
第一种简单粗暴(定时器每分钟执行)
var limit = 15 setInterval(function() { var currMinutes = new Date().getMinutes() if (currMinutes % limit == 0) { /*其他代码*/ } }, 1000 * 60)
第二种是精确计算间隔
// 间隔 var limit = 15 // 当前分钟 var currMinutes = new Date().getMinutes() // 当前间隔 var diff = currMinutes == 0 ? limit : (60 - currMinutes) % limit var startFun = function() { // 启动定时器 var intval = setTimeout(function() { /*其他代码*/ console.log('yes') if (diff != limit) { diff = limit clearTimeout(intval) } startFun() }, diff * 60 * 1000) } startFun()
看了第一个写法,在看第二个写法是不是觉得第二个就是一个笑话(傻逼)的写法。我费了半天劲写了第二种写法,突然陈(汉军)老师说了第一个写法,
我也笑自己傻,真傻