1. 防抖:触发高频事件后n秒内函数只会执行一次,如果n秒内高频事件再次被触发,则重新计算时间。
2. 节流:高频事件触发,但在n秒内只会执行一次,所以节流会稀释函数的执行效率。
<button >
防抖
</button>
<button >
节流
</button>
<script>
let btn = document.querySelectorAll('button');//获取到button
if(btn[0]){
let timeout = null;
btn[0].onclick = function(){
clearTimeout(timeout);//1000毫秒内再次触发,会清除上次,重新开始计数
timeout = setTimeout(()=>{
console.log(1);
},1000);
}
}
if(btn[1]){
let canRun = true;
btn[1].onclick = function(){//设置canRun 标志位,每次执行完成后方可继续执行
if(!canRun) return;
canRun = false;
name = setTimeout(()=>{
console.log(2);
canRun = true;
},1000);
}
}
</script>