JS 节流函数(throttle)与防抖函数(debounce)
节流和防抖是什么意思
- 节流:连续触发某事件,在一段时间后没有继续触发该事件才执行一次。
- 防抖:连续触发某事件,在一段时间内只执行一次。
手写节流函数(详见本仓库:throttle.js)
//方法一:利用闭包保存时间
const throttle = function(fn,delay){
  let prev = Date.now()
  return  ()=> {
    let now = Date.now()
    if (now - prev >= delay) {
        fn()
        prev = Date.now()
    }  
  }
}
手写防抖函数(详见本仓库:debounce.js)
//方法一:利用闭包保存延时器
const debounce = function(fn,delay){
  let timer = null
  return ()=> {
    clearTimeout(timer)
    timer = setTimeout(()=>fn(), delay)
  }
}
如果是react项目,我们可以使用自定义hooks来封装,预览地址
https://codesandbox.io/s/usehooks-vki3p?file=/src/App.js
应用
- 防抖应用:输入框 change ,延时响应输入。例如货币输入框自动加小数点
- 节流应用:响应滚动事件。例如瀑布流无限滚动
 
                    
                
 
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号