概念
函数节流和函数防抖,两者都是优化高频率执行js代码的一种手段。
函数节流是指一定时间内js方法只跑一次。
轮播图一直点下一张,会触发多个定时器,用一个节流器(其实就是一个flag= false)就可以保证他在上一个定时器没结束之前不会开启下一个定时器
函数防抖是指频繁触发的情况下,只有足够的空闲时间,才执行代码一次。
在搜索框输入关键字搜索时,通常会弹出联想到的搜索词语,用防抖可以延时弹出联想词语的弹出,让用户把完整的词语打完后再弹出,而不是每次keyup都会触发这个事件
函数节流
// 函数节流
var canRun = true; // 节流器
document.getElementById("throttle").onscroll = function(){
if(!canRun){
return
}
canRun = false
setTimeout( function () {
console.log("函数节流")
canRun = true
}, 500)
}
当canRun为false的时候不能开启下面的定时器
函数防抖
// 函数防抖
var timer = false;
document.getElementById("debounce").onscroll = function(){
clearTimeout(timer); // 清除未执行的代码,重置回初始化状态
timer = setTimeout(function(){
console.log("函数防抖");
}, 300);
};
当屏幕滚动后,三秒内没有再次滚动,则会打印
如果三秒内再次滚动了,又会重新开始这个定时器,在之后的三秒后没有滚动才会打印
- 本文链接:http://horry233.github.io/2020/10/19/%E5%87%BD%E6%95%B0%E7%9A%84%E9%98%B2%E6%8A%96%E5%92%8C%E8%8A%82%E6%B5%81/
- 版权声明:本博客所有文章除特别声明外,均默认采用 许可协议。
若没有本文 Issue,您可以使用 Comment 模版新建。
GitHub Issues