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