防抖
函数防抖就是在函数需要频繁触发的情况时,只有足够的空闲的时间,才执行一次。
function debounce(handler, delay) {
let timer = null
return function() {
clearTimeout(timer)
let args = arguments
timer = setTimeout(() => {
handler.apply(this, args)
}, delay)
}
}
节流
函数节流就是在预定一个函数只有在大于等于执行周期时才执行,周期内调用不执行。
function throttle(handler, wait) {
let lastTime = 0;
return function() {
let now = new Date().getTime()
if(now - lastTime > wait) {
handler.apply(this, arguments)
lastTime = now
} else {
return
}
}