函数防抖:在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时。这个我经常用到/** * 函数防抖 * fun 需要延时执行的函数 * delayTime 延时时间 * **/export function debounce (func, delay) { let timer return function (...args) { console.log('进来了!') if (timer) { clearTimeout(timer) } timer = setTimeout(() => { func.apply(this, args) }, delay) }}函数节流:规定一个单位时间,在这个单位时间内,只能有一次触发事件的回调函数执行,如果在同一个单位时间内某事件被触发多次,只有一次能生效
/** * 函数防抖 * fun 需要延时执行的函数 * delayTime 延时时间 * **/
export function throttle(fun, gapTime) { let _lastTime = null; return function () { let _nowTime = + new Date() if (_nowTime - _lastTime > gapTime || !_lastTime) { fun(); _lastTime = _nowTime } }}let fn = ()=>{ console.log('boom')}setInterval(throttle(fn,1000),10)