节流:在一定时间内函数只执行一次
function throttle(func, waitTime) {
let lock = false
return function (e) {
if (lock) {
return
}
lock = true
setTimeout(() => {
func.apply(this, arguments)
lock = false
}, waitTime)
}
}
function hello() {
console.log('节流')
}
throttle(hello, 1000)
防抖:在规定时间内只执行函数的最后一次
function debounce(func, waitTime) {
let timer = null
return function () {
if (timer) {
clearTimeout(timer)
}
timer = setTimeout(() => {
func.apply(this, arguments)
}, waitTime)
}
}