节流throttle == 技能CD
技能cd,在一段时间内只能被触发一次
节流:使高频触发的事件转换为低频触发
应用
- window.onresize
- onscroll
- 一些活动的高频点击,并不要真的一直向后台发送请求
代码思路
```javascript function throttle(func,delay){ let lock = true return function(){ if(!lock){需要一个函数
入参:需要执行的方法,执行的时间间隔
函数需要实现,在传入时间内,只执行一次
} lock = false setTimeout(()=>{ lock = true func() },delay) } }return
调用
```javascript
let executeFunc = function(){
console.log('executing')
}
setInterval(throttle(executeFunc,1000),1)
防抖debounce == 回城
防抖:防止误操作(手抖操作)导致的多次触发,转换为最后一次触发
应用
- 搜索联想
- 按钮
代码
调用function debounce(func,delay){
let timer;
return function(){
clearTimeout(timer)
timer = setTimeout(()=>{
func()
},delay)
}
}
function showTop () {
var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
console.log('滚动条位置:' + scrollTop);
}
window.onscroll = debounce(showTop,1000)