防抖函数
设置一个定时器,当我们重复调用一次函数,我们就清除定时器,重新定时,直到在设定的时间段内没有重复调用函数
// fn 需要执行的方法
// delay 延时时间,默认给个500毫秒
function debounce(func, delay) {
//定义一个定时器
let timer;
return function() {
// 返回一个闭包,延长其定时器的生命周期,重复调用函数会清理上一个定时器
clearTimeout(timer);
timer = setTimeout(() => {
func.apply(this, arguments);
}, delay);
};
}
节流函数
可以理解为一个控制阀门,这一段时间内只执行第一次
/**
* func 需要执行的方法
* delay 延时时间,默认给个300毫秒,可以根据需求自定义
*/
function throttle(func, delay) {
let timer;
return function() {
// 如果没有定时器,就执行该函数;有定时器就不处理
if (!timer) {
timer = setTimeout(() => {
// this:改变this指向 arguments:拿到传递的参数信息
func.apply(this, arguments);
timer = null;
}, delay);
}
};
}
标签:function,防抖,定时器,节流,代码,timer,delay,func
From: https://www.cnblogs.com/xianlling/p/17815084.html