手写防抖节流
# 手写防抖节流
# 防抖
所谓防抖就是在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时。
function debounce(func, time) {
let timer;
return function() {
clearTimeout(timer);
let args = arguments;
timer = setTimeout(() => {
func.apply(this, args);
}, time)
}
}
# 节流
所谓节流就是规定在一个单位时间内,只能触发一次函数。如果这个单位时间内多次触发函数,只有一次生效。
function throttle(func, time) {
let t1 = 0;
return function() {
let t2 = new Data();
if (t2 - t1 > time) {
func.apply(this, arguments);
t1 = t2;
}
}
}