节流
// 封装节流函数
let temp = false;
function throttle(fn, time) {
// 通过闭包保存一个 "节流阀" 默认为false
return function () {
// 触发事件被调用 判断"节流阀" 是否为true 如果为true就直接trurn出去不做任何操作
if (temp) {
return;
} else {
// 如果节流阀为false 立即将节流阀设置为true
temp = true; // 节流阀设置为true
// 开启定时器
setTimeout(() => {
// 将外部传入的函数的执行放在setTimeout中
fn.apply(this, arguments);
//最后在setTimeout执行完毕后再把标记'节流阀'为false(关键) 表示可以执行下一次循环了。当定时器没有执行的时候标记永远是true,在开头被return掉
temp = false;
}, time);
}
}()
}
防抖
// 防抖
let temp2 = false;
function debounce(fn, delay) {
clearTimeout(temp2)
return function () {
temp2 = setTimeout(() => {
fn()
}, delay);
}()
}