防抖
高频事件在触发后n秒内只会执行一次,如果n秒内再次触发则重新计算时间
function debounce(fn, time = 500) {
let t;
return function () {
if (t) {
clearTimeout(t);
t = null;
}
const context = this;
t = setTimeout(function () {
fn.apply(context, arguments);
t = null;
}, time);
};
}
节流
高频事件在触发后n秒内只会执行一次,如果n秒内再次触发则pass
function throttle(fn, time = 500) {
let t;
return function () {
if (t) return;
const context = this;
t = setTimeout(function () {
fn.apply(context, arguments);
t = null;
}, time);
};
}
网友评论