节流与防抖

307 阅读1分钟

参考链接:https://mp.weixin.qq.com/s/Vkshf-nEDwo2ODUJhxgzVA

区别:防抖以最后一次触发的事件为准;节流以第一次触发的事件为准,两者都可以用定时器实现;两者都用通过返回一个函数给外面,形成闭包来实现

代码:

防抖:

function throttle(fn, delay) {
  var timer = null
  return function() {
    timer && clearTimeout(timer)
    timer = setTimeout(fn, delay)
  }
}

节流:

function debounce(fn, delay) {
  var timer = null
  return function() {
    var context = this
    var args = arguments
    if (!timer) {
       timer = setTimeout(() => {
         fn.apply(context , args )
          timer = null
       }, delay)
     }
  }
}