首页 > 试题广场 >

js的节流和防抖

[问答题]

// 函数节流 var canRun = true; document.getElementById("throttle").onscroll = function(){     if(!canRun){         // 判断是否已空闲,如果在执行中,则直接return         return;     }     canRun = false;     setTimeout(function(){         console.log("函数节流");         canRun = true;     }, 300); }; 函数节流的要点是,声明一个变量当标志位,记录当前代码是否在执行。 如果空闲,则可以正常触发方法执行。 如果代码正在执行,则取消这次方法执行,直接return。 // 函数防抖 var timer = false; document.getElementById("debounce").onscroll = function(){     clearTimeout(timer); // 清除未执行的代码,重置回初始化状态     timer = setTimeout(function(){         console.log("函数防抖");     }, 300); };   函数防抖的要点,也是需要一个setTimeout来辅助实现。延迟执行需要跑的代码。 如果方法多次触发,则把上次记录的延迟执行代码用clearTimeout清掉,重新开始。 如果计时完毕,没有方法进来访问触发,则执行代码。

编辑于 2019-03-16 16:26:23 回复(0)