函数节流和防抖(二)—— 节流函数
二、什么是函数节流? 1、概念:函数节流(throttle),是指在连续触发的事件中,在延迟时间内有且仅执行一次函数。节流如字面意思,会稀释函数的执行频率。
2、使用场景:
-
当用户量很大时,搜索框中搜索按钮的连续点击 在规定的时间内不准点击第二次,例如用户名、手机号、邮箱输入验证功能
3、代码实现:
-
setTimeout版
function throttle(fun, wait) {
let timer;
return function (...arguments) {
if(timer) {
return;
};
timer = setTimeout(() => {
fun.apply(this, arguments);
timer = null;
}, wait);
}
}
-
时间戳版
function throttle(fun, wait) {
let previous_time = 0;
return function (...arguments) {
let current_time = +new Date();
if(current_time - previous_time > wait) {
fun.apply(this, arguments);
previous_time = current_time;
}
}
}
4、setTimeout版和时间戳版的区别就在于: setTimeout版中目标函数的触发是在wait时间结束的时候触发的,而时间戳版中目标函数的触发是在wait时间开始的时候触发的。
每一篇一个知识点,That’s all,thank you.
