d-utils
Version:
d-utils
24 lines (23 loc) • 1.31 kB
JavaScript
/**
* d-utils version: 4.0.3
* by ifmiss
*/
/**
* @description 函数防抖
* @param { Function } fn 需要防抖的函数
* @param { Number } t 防抖时间,多久以后才能再执行 单位ms
* @param { Boolean } immediate true: 立刻执行方法且最后一次时间不执行, false: 等t时间之后再执行方法,如果t时间内执行,则在最后一次的t时间之后执行方法,类似动态搜索效果
* @example
* // 在鼠标resize的过程中,1秒以后可以被执行,如果在1秒内触发resize,则从新计算下一个一秒再允许执行
* window.onresize = debounce(function () {
* // es5 获取参数
* let arg = Array.prototype.slice.call(arguments)
* // es6 获取参数
* let arg1 = Array.from(arguments)
* console.log('resize-debounce', arg)
* console.log('resize-debounce', arg1)
* }, 1000)
*/
function t(t,e,o){var i;
// 立刻执行第一次该方法
if(void 0===o&&(o=!0),"function"==typeof t)return o?function(){clearTimeout(i),i||t.apply(this,arguments),i=setTimeout((function(){setTimeout(i),i=null}),e)}:function(){clearTimeout(i),i=setTimeout((function(){setTimeout(i),t.apply(this,arguments),i=null}),e)};console.error("第一个参数必须是方法","[d-utils] GenericUtils debounce error => ")}export default t;export{t as debounce};