防抖 debounce

原理

事件触发时,在设定的时间后再执行回调函数,若在期间被再次触发,则重新计时

  1. export function debounce (func, delay) {
  2. let timer
  3. return function () {
  4. if (timer) clearTimeout(timer)
  5. timer = setTimeout(func, delay)
  6. }
  7. }

应用场景

  • 按钮 click
  • 输入框 input

    节流 throttle

    原理

    事件在设定的单位时间内只能触发一次回调函数,若触发多次,只有一次生效

    1. function throttle() {}

    应用场景

  • 窗口 resize

  • 滚动条 scroll