UNPKG

t-comm

Version:

专业、稳定、纯粹的工具库

39 lines (37 loc) 844 B
/** * 节流 * * 连续触发事件但是在 n 秒中只执行一次函数 * @param {Function} fn 主函数 * @param {number} time 间隔时间,单位 `ms` * @returns 闭包函数 * * @example * * ```ts * function count() { * console.log('xxxxx') * } * window.onscroll = throttle(count, 500) * ``` */ function throttle(fn, time) { var timer; return function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } // @ts-ignore // eslint-disable-next-line @typescript-eslint/no-this-alias var that = this; // const args = [...arguments]; if (!timer) { timer = setTimeout(function () { timer = null; // 注意,一定要先置为null,再执行fn fn.apply(that, args); }, time); } }; } export { throttle };