函数的防抖与节流
函数防抖
在函数执行多次的情况,只有最后一次执行,其他时候都不执行
函数防抖的原理:当我们执行某个操作,把这个操作包在一个计时器里,如果在计时过程中进行了第二次调用,则清除上一次的计时操作,重新开始计时。直到不会有下一次操作清除计时器,最后计时结束 执行代码
函数节流的实现:
let t = null
function debounce(fn) {
clearTimeout(t)
t = setTimeout(function () {
fn()
}, 1000)
}
function handle () {
console.log('函数调用执行')
}
debounce(handle)
函数节流
在函数执行多次的情况,每隔定义的时间执行一次
函数节流的原理: 某个时间段只会执行一次。然后可以减少函数执行的频率
函数节流的实现:
let canRun = true
document.onclick = function () {
if (!canRun) return
canRun = false
setTimeout (function () {
console.log("事件执行")
canRun = true
}, 1000)
}