//节流函数:你点多少下,就执行多少下,但是每次执行会有时间间隔
//第一个参数func,是将要被节流的函数
//第二个参数delay,是要节流的时间
function throttle(func, delay) {
//用来控制节流函数
let isThrottled = false;
//一定要把该函数返回出去
return function() {
if (!isThrottled) {
//会先执行一次被节流的函数
//修改this指向,让其指向func形参处即将传入的函数
//arguments是要传到func里的参数
func.apply(this, arguments);
//此时把控制节流函数的变量设为true
//这样在连续点击时,if(!isThrottled)就不会被执行
//必须得等setTimeout()函数执行完以后
//isThrottled重新变为false时,才会再次执行if(!isThrottled)里的内容
isThrottled = true;
setTimeout(() => {
isThrottled = false;
}, delay);
}
};
}
// 用法示例
// debouncedFunction这个函数,是被节流的函数
const debouncedFunction = debounce(function() {
console.log('防抖函数被调用了');
}, 300);
//无论我们点击类名为bt-k的元素多少次,debouncedFunction这个函数必须每隔一段时间才执行一次
//点击多少次,最终就会执行多少次
$(document).on("click", ".bt-k", debouncedFunction);
03常用算法:用jq实现节流函数
最新推荐文章于 2024-05-24 23:45:01 发布