当持续触发事件时,一定时间段内没有再触发事件,事件处理函数才会执行一次,如果设定的时间到来之前,又一次触发了事件,就重新开始延时。举个栗子,持续触发scroll事件时,并不执行handle函数,当1000毫秒内没有触发scroll事件时,才会延时触发scroll事件。
/*
* description: 在vue中使用的防抖函数
* param fnName {String} 函数名
* param param {String} 参数
* param time {Number} 延迟时间
* return: 处理后的执行函数
*/
function VueDebounce(fnName ,param, time) {
let timeout = null;
return function() {
if (timeout) {
clearTimeout(timeout);
}
timeout = setTimeout(() => {
this[fnName](param);
}, time);
};
}
**节流 防止重复点击按钮**
function throttle(fnName,param,delay){
let valid = true
return function() {
if(!valid){
return false
}
this[fnName](param);
// 执行函数并且在间隔期内把状态位设为无效
valid = false
setTimeout(() => {
valid = true;
}, delay)
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。