JS 节流与防抖
基本概念
- 节流:n 秒内只运行一次,若 n 秒内重复触发,只生效一次。进阶——可选【首次触发】【终次触发】
- 防抖:n 秒后执行该事件,若 n 秒内重复触发,重新计时。进阶——可选【首次触发】【终次触发】【回调】
应用场景
- 节流:
- 搜索框输入联想提示
- 滚动加载,虚拟滚动
- 防抖:
- 窗口 resize
- 输入内容正则校验
实际运用场景远不止这些,只要有避免一段时间内频繁执行的需求,都有节流防抖的应用
防抖功能的实现
简单实现
|
|
扩展实现
参数选项扩展、返回值扩展。更复杂的实现,可移步 lodash
|
|
校验器
你可以使用以下的代码模拟事件触发
|
|
节流功能实现
简单实现
只需要在防抖代码的基础上,计算定时器的剩余时间 restTime
替换 wait
|
|
扩展实现
参数选项扩展、返回值扩展。同样在防抖函数的基础数修改。更复杂的实现,可移步 lodash
|
|