js防抖和限流

防抖

函数在300毫秒内触发就停掉定时器,只有在300毫秒后触发才会执行回调。

function debounce(callback,delay=300){
    var t = null
    return function(){
      clearTimeout(t)
      t = setTimeout(callback,delay)
    }
  }
  window.onscroll = debounce(function(){
    console.log('调用了一次');
  })

限流

函数只有在前后两次的时间大于500毫秒触发才会执行回调。

function throttle(callback,duration=500){
    var lastTime = new Date().getTime()
    return function(){
      var now = new Date().getTime()
      if(now - lastTime > duration) {
        callback();
        lastTime = now;
      }
    }
  }
  window.onscroll = throttle(function(){
    console.log('调用了一次');
  })

你可能感兴趣的:(js)