什么是节流和防抖
1. 防抖
- 定义:防抖指的是连续触发事件,但是在设定的时间内只执行最后一次。可以理解为连续触发一个事件,每次触发之后都重新开始执行。
- 应用场景:
- 搜索框搜索:不能每次输入的时候都发送一次请求,这样会很频繁,所以需要防抖来限制,设定一个时间,在规定时间内如果连续触发输入,那也只是执行最后一次触发输入发送请求。
- 文本编辑器实时保存:不一定每次输入都需要保存,可以利用防抖在一定时间,多长时间之后再进行保存。
- ……
- 实现思路:
let timer = null;
document.querySelector('input').onkeyup = () => {
if(timer !== null){
clearTimeout(timer);
}
timer = setTimeout(() => {
},1000)
}
2.节流
- 定义:节流是指连续触发事件但是在设定的时间内只执行一次。可以理解为连续触发一个事件,但是只有执行完第一次请求之后,才会重新发送新的请求。
- 应用场景:
- 快速点击、鼠标滑动、scroll事件、下拉加载等等:这种高频触发事件一般都得响应完一次请求后再接着发送下一轮请求。
- ……
- 实现思路:
let timer = null;
document.querySelector('input').mouseover = () => {
if(timer !== null){
return;
}
timer = setTimeout(() => {
timer = null;
},1000)
}
总结
