JS节流与防抖
对JS节流和防抖的理解
防抖与节流本质上是优化高频率执行代码的一种手段。浏览器的 resize、scroll、keypress、mousemove 等事件在触发时,会不断地调用绑定在事件上的回调函数,极大地浪费资源,降低前端性能
JS的节流throttle
- 原理:在持续触发某事件时,一定的时间内只会执行一次函数,目的是减少一定事件内的触发频次
- 应用场景:鼠标连续不断地触发某事件(如点击),单位时间内只触发一次;监听滚动事件,比如是否滑到底部自动加载更多,用throttle来判断。例如:懒加载;浏览器播放事件,每个一秒计算一次进度信息等。
代码实现: - 基础版节流
- 封装版节流
- 企业版节流 引入lodash.js文件
JS的防抖debounce
- 原理:当频繁触发某事件时,若在设定时间内重复触发,会重新开始计时,直到过了设定的时间没有再次触发了,事件才会处理函数一次
- 应用场景:登录、发短信等按钮避免用户点击太快,以致于发送了多次请求,需要防抖;调整浏览器窗口大小时,resize 次数过于频繁,造成计算过多,此时需要一次到位,就用到了防抖
代码实现: - 基础版防抖
- 封装版防抖
- 企业版防抖 引入lodash.js文件