手写防抖与节流

125 阅读1分钟

防抖

  • 避免因事件频繁触发而导致的页面性能问题
  • 最后一次事件触发后执行

// 手写防抖函数function debounce(func, delayTime) {  let timer = null  return function(...args) {    if(timer) {      clearTimeout(timer)      timer = null      timer = setTimeout(() => {        func(...args)      }, delayTime)    }  }}

节流

  • 避免因事件频繁触发而导致的页面性能问题
  • 每隔一段时间执行

    // 手写节流函数function debounce(func, delayTime) {  const timer = null  return function(...args) {    if(!timer) {      timer = setTimeout(() => {        func(...args)        timer = null      }, delayTime)    }  }}