函数节流
一段时间执行一次之后,就不执行第二次
//函数节流
function throttle(fn, delay) {
let canUse = true
return function () {
if (canUse) {
canUse = false
const context = this
const args = arguments
setTimeout(() => {
fn.apply(context, args)
canUse = true
}, delay)
}
}
}
函数防抖
在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时。
//函数防抖
function debounce(fn, delay) {
let timer = null
return function () {
const context = this
const args = arguments
if (timer) {
clearTimeout(timer)
}
timer = setTimeout(() => {
fn.apply(context, args)
}, delay)
}
}