先上代码
//防抖
//如果定时器存在,清除定时器,重新执行函数
function debounce(fn,wait){
var timer = null;
return function(){
if(timer !== null){
clearTimeout(timer);
}
timer = setTimeout(fn,wait);
}
}
//节流
//只有满足指定时间差才会执行
function throttle(func, wait) {
let previous = 0;
return function() {
let now = +new Date();
let remain = wait - (now - previous);
if (remain < 0) {
previous = now;
func.call(this, arguments);
}
}
}
结论
-
防抖是在wait时间内,保证只有一个实例在执行,有后续实例时,只保证最后一个实例执行。
-
节流是在wait时间内,只执行一次实例,有后续实例时,也不执行,只执行当前的实例。