/**
- 用闭包维护同一份 timer
- 防抖是 触发事件后,多次时间后才执行(每次触发都要更新时间)
- @param {} fn
- @param {*} delay */
function debounce(fn, delay) { var timer = null return function(...arg) {
if(timer) {
clearTimeout(timer)
}
timer = setTimeout( ()=> {
fn(...arg)
timer = 0
}, delay)
}
}
function ajax(url) { setTimeout(() => { console.log(url) }, 2000); }
var ajaxFun = debounce(ajax, 1000)
ajaxFun('localhost:3000/user')
/**
- 维护同一份 timer
- 节流是 一个固定的时长内,执行一次 , 多次触发无反应 */
function jieLiu(fn, delay) { var timer = null return function(...arg){ if(timer) { return }
timer = setTimeout(() => {
fn(...arg)
timer = null
}, delay);
}
}
var jieLiuFun = jieLiu(ajax, 2000)
jieLiuFun('这是节流')