js防抖和节流

61 阅读1分钟

防抖:仅最后一次操作有效

  let timeout = null
  return function() {
    if(timeout){
        clearTimeout(timeout)
    }
    timeout = setTimeout(() => {
      fn.apply(this, arguments)
    }, wait)
  }
}

节流:仅第一次操作有效

  let canRun = true
  return function() {
    if(!canRun) return
    canRun = false
    setTimeout(() => {
      fn.apply(this, arguments)
      canRun = true
    }, wait)
  }
}