防抖
是在特定时间内,多次触发事件/函数时,只执行最后一次,并且重新计时。
- 代码实现
function debounce(fn, time) {
let timer = null;
return function(args) {
clearTimeout(timer);
timer = setTimeout(function() {
fn(args);
}, time)
}
}
节流
是特定时间内,多次触发事件,只生效一次。
function throttle(fn, time) {
let preTime = 0;
return function (...args) {
let nowTime = Date.now();
if (nowTime - nowTime >= time) {
preTime = nowTime;
fn(...args);
}
}
}