防抖

多次触发一个事件,停止后,过一定的时间间隔,只会触发最后一个事件

  1. const debounce = (func, delay) => {
  2. let timer
  3. return function() {
  4. if(timer) clearTimeout(timer)
  5. timer = setTimeout(() => {
  6. func.apply(this, arguments)
  7. }, delay)
  8. }
  9. }

节流

多次触发一个事件,在一定的时间内,只会触发一次事件

  1. const throttle = (func, delay) => {
  2. let run = true
  3. return function() {
  4. if(!run) return
  5. run = false
  6. setTimeout(() => {
  7. func.apply(this, arguments)
  8. run = true
  9. }, delay)
  10. }
  11. }