当继续触发事件时,肯定时间段内没有再触发事件,事件处理函数才会执行一次,如果设定的工夫到来之前,又一次触发了事件,就从新开始延时。举个栗子,继续触发 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);
};
}