关于防抖和节流的思考
程序员文章站
2022-05-14 13:28:12
...
关于防抖节流的思考
防抖
- 我个人是这么理解的,就是在指定时间内不能有多余的抖动,不然会重新计时,更确切的说,就是在指定时间内只能触发一个事件,如果这段时间内有其他的事件发生,那么就会重新计时。
- 按事件发生的时刻可以分为,立即发生和延迟之后发生
// 延迟发生
function debounce(fn,wait){
var timeout
return function(){
if(timeout){
clearTimeout(timeout)
}
var args = Array.prototype.slice.call(arguments)
timeout = setTimeout(()=>{
//延迟之后发生
fn.apply(this,args)
},wait)
}
}
//立即发生
function immdebounce(fn,wait){
var timeout
return function(){
if(timeout){
clearTimeout(timeout)
}
var args = Array.prototype.slice.call(arguments)
//立马发生
if(!timeout){
fn.apply(this,args)
}
timeout = setTimeout(()=>{
timeout = null
},1000)
}
}
节流
- 什么是节流?就是事件还是会持续发生,但是延迟时间内只能有一次事件的发生,某种意义上来讲,就是事件发生的频率变慢了
function throttle(fn,wait){
var timeout
return function(){
var args = Array.prototype.slice.call(arguments)
if(!timeout){
timeout = setTimeout(()=>{
timeout = null
fn.apply(this,args)
},wait)
}
}
}
下一篇: 前端网站性能优化