简单的防抖
// 一个最简单的防抖
function debounce(fun, wait = 50) {
let timer;
return function (...args) {
// 有新的请求进来就干掉原来的计时器,重新开始计时
if (timer) {
clearTimeout(timer);
}
// 计时器完成,执行函数
timer = setTimeout(() => {
fun.apply(this, args);
}, wait);
};
}
简单的节流
/**
* 一个简单的节流函数
* @param {function} fun 需要执行的函数
* @param {number} time 指定的时间周期长度(毫秒)
*/
export function easyThrottle(fun, time = 500) {
console.log(fun, time);
// 用于缓存当前时间,以判断上一次这个方法执行到现在已经用了多久
let previous = 0;
// 返回一个闭包函数
return function (...args) {
// 当前时间
let now = Date.now();
// 上次执行时间到当前时间是否已经允许再次执行
if (now - previous > time) {
// 执行函数
fun.apply(this, args);
// 修改上次时间为当前时间,下一次进入时就跟当前时间比较
previous = now;
}
};
}
/**
* 1. 建立一个变量timer,用于储存当次执行的时间