- 初次触发事件,立即执行(可选)
- 对于在事件被触发 n 秒后再执行的回调,即延迟执行
如果在这 n 秒内再触发事件,重新开始计时
/*** @description 防抖函数* @param {function} fn - 目标函数* @param {number} delay - 延迟时间* @param {boolean} triggerNow - 是否立即执行* @returns {function}*/function debounce (fn, delay, triggerNow) {var t = null;var debounce = function () {var _self = this,args = arguments;if (t) {clearTimeout(t);}if (triggerNow) {var exec = !t;t = setTimeout(function () {t = null;}, delay);if (exec) {fn.apply(_self, args);}} else {t = setTimeout(function () {fn.apply(_self, args);}, delay);}}debounce.remove = function () {clearTimeout(t);t = null;}return debounce;}
