要求:按照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()

 

看了第一个写法,在看第二个写法是不是觉得第二个就是一个笑话(傻逼)的写法。我费了半天劲写了第二种写法,突然陈(汉军)老师说了第一个写法,

我也笑自己傻,真傻