防抖、节流的作用,分别在什么场景使用?
题干
防抖
节流
题解
防抖和节流都是用来减少函数执行的频率,以达到优化项目性能或者实现特定功能的效果。它们的区别是:
防抖是防止抖动,指的是单位时间内事件触发会被重置,避免事件被误伤触发多次。实现原理是利用 setTimeout
函数,每次触发事件时都取消之前的延时调用方法。
防抖适用于那些触发频率高但只需要执行一次或最后一次的操作,如登录、发短信等按钮避免用户点击太快,以致于发送了多次请求;调整浏览器窗口大小时,resize
次数过于频繁,造成计算过多,此时需要一次到位;文本编辑器实时保存,当无任何更改操作一秒后进行保存。
节流是控制流量,指的是单位时间内事件只能触发一次,节省服务器端资源。实现原理是利用一个标志位,每次触发事件时都判断该标志位是否为 true
,如果是则执行函数并设置为 false
,一段时间后再设置为 true
,从而实现间隔执行。
节流适用于那些触发频率高但需要按照一定的时间间隔执行的操作,如 scroll
事件,每隔一秒计算一次位置信息等;浏览器播放事件,每个一秒计算一次进度信息等;input
框实时搜索并发送请求展示下拉列表,没隔一秒发送一次请求(也可做防抖)。