如果一个事件频繁触发多次,并且两次事件相隔事件比较短,则防抖函数使得对应的处理事件只触发一次。
```
functiondebounce(fn, delay) {
let timer=null
return function() {
clearTimeout(timer)
timer = setTimeout(() => {
fn()
}, delay)
}
}
```
如果一个事件频繁触发多次,节流函数可以按照固定频率执行相应的处理事件
```
function throttle(fn, threshold) {
let timer
let startTime = Date.now()
return function() {
let endTime = Date.now()
clearTimeout(timer)
if((endTime - startTime) >= threshold) {
fn()
startTime = endTime
} else {
timer = setTimeout(() => {
fn()
}, threshold)
}
}
}
```
网友评论