防抖和节流
in Master Pageviews
one day one game!
// 节流
function throttle(fn, interval) {
var timer,
isFirst = true;
return function() {
var args = arguments,
that = this;
if(isFirst) { //如果是第一次调用,不许延迟执行;
fn.apply(that, args)
return isFirst = false;
}
if(timer) { //如果定时器还在,说明前一次延迟执行还未完成;
return false;
}
timer = setTimeout(() => { //延迟一段时间后执行;
clearTimeout(timer);
timer = null;
fn.apply(that, args);
}, interval || 500);
}
}
window.onresize = throttle(function() {
console.log(1);
}, 1000);
// 防抖
function debounce(fn, interval) {
var timer,
isFirst = true,
can = false;
return function() {
var args = arguments,
that = this;
if(timer) {
clearTimeout(timer);
timer = null;
}
if(isFirst) {
fn.apply(that, args);
isFirst = false;
setTimeout(() => {
can = true;
}, interval || 1000);
}
else if(can) {
timer = setTimeout(() => {
fn.apply(null, args);
}, interval || 1000);
}
}
}