什么是防抖和节流?有什么区别?如何实现?
2023-02-26 09:49:35 时间
什么是防抖
防抖策略(debounce)是当事件被触发后,延迟 n 秒后再执行回调,如果在这 n 秒内事件又被触发,则重新计时
代码示例
let timer = null // 创建一个标记用来存放定时器的返回值
return function () {
// 每当用户输入的时候把前一个 setTimeout clear
clearTimeout(timer)
// 然后又创建一个新的 setTimeout, 这样就能保证 initial 间隔内如果时间持续触发,就不会执行 fn 函数
timer = setTimeout(() => {
fn.apply(this, arguments)
}, 500)
}
什么是节流
节流策略(throttle),顾名思义,可以减少一段时间内事件的触发频率。
代码示例
let canRun = true // 通过闭包保存一个标记
return function () {
// 在函数开头判断标记是否为 true,不为 true 则 return
if (!canRun) return
// 立即设置为 false
canRun = false
// 将外部传入的函数的执行放在 setTimeout 中
setTimeout(() => {
// 最后在 setTimeout 执行完毕后再把标记设置为 true (关键)表示可以执行下一次循环了
// 当定时器没有执行的时候标记永远是 false,在开头被 return 掉
fn.apply(this, arguments)
canRun = true
}, 500)
}
总结和区别
防抖:如果事件被频繁触发,防抖能保证只有最有一次触发生效!前面 N 多次的触发都会被忽略!
节流:如果事件被频繁触发,节流能够减少事件触发的频率,因此,节流是有选择性地执行一部分事件!
相关文章
- python中的cookielib的使用方法
- 快速升级python到2.7
- python守护进程demo
- python守护进程 - python-daemon
- Python 代码片段总结
- 为python的logging加点颜色吧
- python 堆排序算法
- Python 运用GeoIP2离线数据库定位
- Python 使用Scapy解析TTL值
- Python 运用Dpkt库解析数据包
- Python 进行数字取证调查
- Python 运用Pexpect实现SSH爆破
- Python Scapy 愚弄入侵检测系统
- Python 实现SockStress全连接攻击
- Python 抓取并解码原始数据包
- Python ARP缓存投毒与DNS欺骗
- Python 实现Web隐藏目录扫描
- Python 其他通用代码总结
- Python 实现DNS查询放大攻击
- Python 实现序列与词法解析