1什么是防抖节流
防抖:防止重复点击触发事件
代码实现要点:首先设置一个定时器,通过闭包,抓住定时器变量,控制定时器的添加和清除 直接上代码
function debounce(fn, time) {
let _arguments = arguments
let timeout = null
return function () {
if (timeout) {
clearTimeout(timeout)
}
timeout = setTimeout(() => {
fn.call(this, _arguments)
}, time);
}
}
2.什么是节流
节流:指定时间间隔内只会执行一次任务
代码实现要点:通过一个布尔变量作为状态,判断代码是否需要执行 直接上代码
function throttle(fn, time) {
let _arguments = arguments
let canRun = true
return function () {
if (!canRun) return
canRun = false
setTimeout(() => {
fn.call(this, _arguments)
canRun = true
}, time);
}
}