JS 防抖和节流
1、防抖
是指频繁触发的情况下,只有足够的空闲时间,才执行代码一次<– 比如生活中的坐公交,就是一定时间内,如果有人陆续刷卡上车,司机就不会开车。只有别人没刷卡了,司机才开车
示例代码:
debounce(fn, delay) {
let timer = null;
return function (e) {
if (timer) {
clearTimeout(timer);
}
timer = setTimeout(() => {
//解决this指向的问题以及事件对象参数的问题
//this;用来保存this指向
//arguments;用来保存函数中所有的引用的参数
fn.apply(this, arguments);
}, delay);
};
},2、节流
是指一定的时间内 js 方法只跑一次<– 就像人眨眼睛,一定时间内眨一次眼睛,这是对于函数节流最形象的解释
示例代码
throttle(fn, delay) {
let timer = null;
return function () {
if (timer) {
return;
}
timer = setTimeout(() => {
fn();
timer = null;
}, delay);
};
},
