防抖和节流
防抖和节流
- 节流: n 秒内只运行一次,若在 n 秒内重复触发,只有一次生效(间隔时间,延迟触发)
- 防抖: n 秒后在执行该事件,若在 n 秒内被重复触发,则重新计时(节约性能,只触发最后一次)
防抖
思路:
事件函数执行,先创建个定时器
把逻辑代码放到定时器中
当函数再次触发,清除定时器
创建—个新定时器即司
基础使用:
1 |
|
高级封装:
1 |
|
节流
思路:
- 事件函数执行,先判断有定时器,则直接return
- 把逻辑代码放到定时器中
- 定时器执行后,置空定时器变量
- 下载事件函数执行时,再创建一个新定时器即可
高级封装:
1 |
|
应用场景
防抖在连续的事件,只需触发一次回调的场景有:
- 搜索框搜索输入。只需用户最后一次输入完,再发送请求
- 手机号、邮箱验证输入检测
- 窗口大小resize。只需窗口调整完成后,计算窗口大小。防止重复渲染。
节流在间隔一段时间执行一次回调的场景有:
- 滚动加载,加载更多或滚到底部监听
- 搜索框,搜索联想功能
防抖和节流
http://example.com/2022/08/29/防抖和节流/