Skip to content
快看这页儿写了啥...

防抖、节流的作用,分别在什么场景使用?

题干

  • 防抖

  • 节流

题解

防抖和节流都是用来减少函数执行的频率,以达到优化项目性能或者实现特定功能的效果。它们的区别是:

防抖是防止抖动,指的是单位时间内事件触发会被重置,避免事件被误伤触发多次。实现原理是利用 setTimeout 函数,每次触发事件时都取消之前的延时调用方法。

防抖适用于那些触发频率高但只需要执行一次或最后一次的操作,如登录、发短信等按钮避免用户点击太快,以致于发送了多次请求;调整浏览器窗口大小时,resize 次数过于频繁,造成计算过多,此时需要一次到位;文本编辑器实时保存,当无任何更改操作一秒后进行保存。

节流是控制流量,指的是单位时间内事件只能触发一次,节省服务器端资源。实现原理是利用一个标志位,每次触发事件时都判断该标志位是否为 true ,如果是则执行函数并设置为 false ,一段时间后再设置为 true ,从而实现间隔执行。

节流适用于那些触发频率高但需要按照一定的时间间隔执行的操作,如 scroll 事件,每隔一秒计算一次位置信息等;浏览器播放事件,每个一秒计算一次进度信息等;input 框实时搜索并发送请求展示下拉列表,没隔一秒发送一次请求(也可做防抖)。

相关

JS 实现防抖 debounce 方法

JS 实现节流 throttle 方法

贡献者

isboyjc's avatar isboyjc

浏览量(PV)  次  ·  独立访客(UV)  人次
不正经的前端 | 八股 · 欢迎 star ⭐