JS节流与防抖

bingMIN / 2023-08-25 / 原文

对JS节流和防抖的理解

防抖与节流本质上是优化高频率执行代码的一种手段。浏览器的 resize、scroll、keypress、mousemove 等事件在触发时,会不断地调用绑定在事件上的回调函数,极大地浪费资源,降低前端性能

JS的节流throttle

  • 原理:在持续触发某事件时,一定的时间内只会执行一次函数,目的是减少一定事件内的触发频次
  • 应用场景:鼠标连续不断地触发某事件(如点击),单位时间内只触发一次;监听滚动事件,比如是否滑到底部自动加载更多,用throttle来判断。例如:懒加载;浏览器播放事件,每个一秒计算一次进度信息等。
    代码实现:
  • 基础版节流

  • 封装版节流
  • 企业版节流 引入lodash.js文件

JS的防抖debounce

  • 原理:当频繁触发某事件时,若在设定时间内重复触发,会重新开始计时,直到过了设定的时间没有再次触发了,事件才会处理函数一次
  • 应用场景:登录、发短信等按钮避免用户点击太快,以致于发送了多次请求,需要防抖;调整浏览器窗口大小时,resize 次数过于频繁,造成计算过多,此时需要一次到位,就用到了防抖
    代码实现:
  • 基础版防抖
  • 封装版防抖
  • 企业版防抖 引入lodash.js文件