函数节流和函数防抖,两者都是优化高频率执行js代码的一种手段。
- 函数节流
是一定时间内只执行一次。
- 函数防抖
函数在特定的时间内不被再调用后执行
比如生活中的坐公交,就是一定时间内,如果有人陆续刷卡上车,司机就不会开车。等到没有人刷卡了,司机再开车。
函数节流代码示例:
function throttle(fn, delay){
let canUse = true
return function(){
if(canUse){
fn.apply(this, arguments)
canUse = false
setTimeout(()=>canUse = true, delay)
}
}
}
const throttled = throttle(()=>console.log('hi'))
throttled()
throttled()
函数防抖代码示例:
function debounce(fn, delay){
let timerId = null
return function(){
const context = this
if(timerId){window.clearTimeout(timerId)}
timerId = setTimeout(()=>{
fn.apply(context, arguments)
timerId = null
},delay)
}
}
const debounced = debounce(()=>console.log('hi'))
debounced()
debounced()
网友评论