// 时间戳实现返回节流函数的工具函数
function timeStampThrottle(callback, delay = 1000) {
let pre = 0; //设置初始时间为0
console.log("pre先前的时间:", pre);
return function(event) {
const current = Date.now();
if (current - pre > delay) { //离上次调用callback防抖目标方法的时间大于delay方再次调用;
callback.call(this, event);
// 记录当下调用的时间
pre = current;
}
}
};
// 定时器实现返回节流函数的工具函数(setInterval)
function timeIntervalThrottle(callback, delay = 1000) {
let pre1 = 0;
return function(event) {
if (pre1 == 0) {
pre1 += 1000;
callback.call(this, event);
//定时器每隔1秒执行一次,会有一秒的空白时间此时pre1为0,故点击时会调用点击事件,点击过立即设置pre1不等0
// 设置的延时时间,需比真实的大1000毫秒
const timer = setInterval(() => {
pre1 += 1000;
// console.log("setInterval的定时器:", pre1);
// console.log("pre的变换;", pre,delay)
if (pre1 == delay) {
clearInterval(timer);
pre1 = 0;
}
}, 1000)
}else{
console.log("请勿频繁点击!")
}
}
}
//执行的函数
function handleClick() {
console.log("执行了函数", this, event);
};