一远荠、防抖
觸發(fā)高頻事件后n秒內函數(shù)只會執(zhí)行一次,如果n秒內高頻事件再次被觸發(fā)矮台,則重新計算時間
思路
每次觸發(fā)事件時都取消之前的延時調用方法
function debounce(fn) {
let timeout = null;
return function() {
clearTimeout(timeout);
timeout = setTimeout(() => {
fn.apply(this, arguments);
}, 500);
}
}
二瘦赫、節(jié)流
高頻事件觸發(fā)辰晕,但在n秒內只會執(zhí)行一次确虱,所以節(jié)流會稀釋函數(shù)的執(zhí)行頻率
思路
每次觸發(fā)事件時都判斷當前是否有等待執(zhí)行的延時函數(shù)
function throttle(fun) {
let isRun = true;
return function() {
if(!isRun) return;
isRun = false;
setTimeout(() => {
fn.apply(this, arguments);
isRun = true;
}, 500)
}
}