debounce与throttle区别及其应用场景

本文深入探讨防抖(debounce)与节流(throttle)技术,解析两者在处理连续操作时的不同策略。防抖用于合并重复操作,直至操作频率降低;节流则确保操作在固定间隔内仅执行一次,适用于需要定期响应的场景。文章通过具体实例,如AJAX请求合并、窗口调整大小及滚动事件,展示这些技术的实际应用。

概念

debounce

字面理解是“防抖”,何谓“防抖”,就是连续操作结束后再执行,以网页滚动为例,debounce要等到用户停止滚动后才执行,将连续多次执行合并为一次执行。

throttle

字面理解是“节流”,何谓“节流”,就是确保一段时间内只执行一次,以网页滚动为例,throttle是如果用户一直在滚动网页,那么在滚动过程中还是会执行,只是一段时间内只执行一次,将连续执行的间隔变大了。

实现

debounce

第一次触发后,进行倒计wait毫秒,如果倒计时过程中有其他触发,则重置倒计时;否则执行。

throttle

第一次触发后先执行fn(lodash可以通过{leading: false}来取消),然后wait ms后再次执行,在单位wait毫秒内的所有重复触发都被抛弃。

应用场景

debounce

用来丢弃一些重复的密集操作,直到流量减慢。

throttle

用在每隔一定间隔执行回调的场景,即如果有连续不断的触发,每wait ms执行fn一次。

场景举例

debounce
  • ajax 请求合并,不希望短时间内大量的请求被重复发送
  • mouse move 时减少计算次数
  • resize window 重新计算样式或布局
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值