防抖,顾名思义,防止抖动。用于将用户的操作行为触发转换为程序行为触发,防止用户操作的结果抖动。一段时间内,事件在我们规定的间隔 n 秒内多次执行,回调只会执行一次。
特点:
等待某种操作停止后,加以间隔进行操作
持续触发不执行不触发
示例:
//fn是要执行的方法,wait是停顿多长时间后执行
function debounce(fn, wait){
var timer = null;
return ()=>{
if(timer !== null){
clearTimeout(timer);
}
timer = setTimeout(fn, wait);
}
}
function handle(){
console.log("执行");
}
//在频繁执行的事件里进行防抖处理
debounce(handle,800);
节流,顾名思义,控制流量。用于用户在与页面交互时控制事件发生的频率,持续触发并不会执行多次,事件停止触发后会再执行一次。
特点:
持续触发并不会执行多次
停止触发后再执行一次
埋点场景
示例:
function throttle(fn,wait){
let timeid = null;
return function(){
if(!timeid){
timeid = setTimeout(function(){
fn();
timeid = null;
},wait)
}
}
}