節流與防抖

BFC發表於2018-09-30

參考連結: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)
     }
  }
}複製程式碼


相關文章