前言:我们在做页面事件绑定的时候,经常要进行节流处理,比如鼠标异步点击,去执行一个异步请求时,需要让它在上一次没执行时不能再点击,又或者绑定滚动事件,这种持续触发进行dom判断的时候,就要按一定频率的执行。
一、 伪理论:
概念: 节流和防抖我认为都可以称之为节流。区别:防抖就是不想持续操作的节流,节流就是想固定频率执行的。
节流:函数节流是指一定时间内js方法只跑一次。前一次没结束,后一次不会跑。比如滚动条这种持续按频率触发。
防抖:函数防抖是指一定时间内js方法只跑一次。前一次没结束,后一次触发会按后一次的新间隔时间计算。比如按钮持续点击的限速。
二、原始的节流操作:
<!-- 一、最原始进行节流操作的函数 -->
<script type="text/javascript">
window.onload = function(){
/**基本防抖案例:先清除,后setTimeout进行执行**/
document.querySelector("#send").addEventListener("click",function(e){
clearTimeout(window.mytime_01);
window.mytime_01 = setTimeout(function(){
console.log("发射...");
}, 500);
});
/**基本节流案例:setTimeout执行完时,恢复标志位,下一次才能执行*/
var mytime_02 = true;
window.onscroll = func