一、防抖
是什么?
单位时间内,频繁触发事件,只执行最后一次(如:王者荣耀中回城)
怎么做?:
利用定时器,每次触发之前先清除掉之前的定时器(从新的开始)
使用场景: 搜索框搜索
代码:
<script>
// 防抖函数
// 思想:当函数被连续调用时,只有最后一次调用会生效,并在指定时间后执行。
// 需求:往一个输入框啦里面输入一个词的时候,每隔2秒进行,只要停止输入,就立即执行搜索。
const $input = document.querySelector("#input");
let timer = null;
document.querySelector("#input").addEventListener("input", function () {
clearTimeout(timer);
timer = setTimeout(() => {
document.querySelector(".container").innerHTML = $input.value;
}, 2000);
});
</script>
二、节流
是什么?
单位时间内,频繁触发事件,只执行一次。
怎么做?
利用定时器,等定时器执行完毕之后,再开启定时器
使用场景: 高频事件,快速点击事件,鼠标滑动,scroll事件,resize事件
使用lodash库,利用里面的debounce(防抖)和throttle(节流)来做。