背景
关于节流与防抖,网络上有很多相关的文章,没次忘记每次都要去查,并且很多在描述的时候都是直接说的应用场景,
并没有很明确、一眼就能告诉你这是什么(what),而是直接告诉你应用场景,和代码,需要自己去梳理,
之前面试过一位同学,问到这个问题的时候他也有这样的毛病,直接告诉你什么应用场景,➕怎么实现,
且回答的思路不是很清晰,所以打算自己梳理一遍写一篇
防抖与节流是什么(概念)
准确的来说,节流与防抖是
用来规定函数执行频率的方法
,主要是用来规定(降低)连续执行函数的频率;
防抖
在我们规定的时间内,重复触发,只执行最后一次
节流
以我们规定的时间为周期,周期性的执行
实现
防抖
function debounce(fn) {
let timer = null;
return () => {
clearTimeout(timer);
timer = setTimeout(() => {
fn()
}, 500)
}
}
节流
function throttle(fn) {
let timer = null;
return () => {
if (!timer) {
timer = setTimeout(() => {
fn()
timer = null;
}, 1000)
}
}
}
应用场景就不多说了,大家应该都知道,只要是触发频率较高,或者两次间隔太过相近,都可以使用,具体怎么使用,看大家实际场景