背景
有些函数我们不希望短时间内执行太多次,比如移动端点击按钮,性能消耗大的函数
准备
- 需要执行的函数-fn,传入触发间隔-time
- 每time秒内最多触发一次
- 返回一个被节流的函数
实现
function throttle(fn, time) {
let isWating;
return function throttleFn() {
if (isWating) {
} else {
fn(...arguments);
isWating = true;
setTimeout(() => {
isWating = false;
}, time);
}
};
}
拓展1
上面的demo是间隔的初期执行函数的,如果希望是间隔的后期执行函数呢?
function throttle(fn, time) {
let isWating;
return function throttleFn() {
if (isWating) {
} else {
isWating = true;
setTimeout(() => {
isWating = false;
fn(...arguments);
}, time);
}
};
}
总结
本质为配置一个函数的锁