1.防抖
觸發(fā)高頻事件后n秒內(nèi)函數(shù)只會(huì)執(zhí)行一次,如果n秒內(nèi)高頻事件再次被觸發(fā),則重新計(jì)算時(shí)間
常見應(yīng)用場景:用戶注冊(cè)時(shí)的手機(jī)號(hào)碼驗(yàn)證和郵箱驗(yàn)證
var timer = false;
document.getElementById("debounce").onscroll = function(){
clearTimeout(timer); // 清除未執(zhí)行的代碼,重置回初始化狀態(tài)
timer = setTimeout(function(){
? console.log("函數(shù)防抖");
}, 300);
};
2.節(jié)流
高頻事件觸發(fā),但在n秒內(nèi)只會(huì)執(zhí)行一次,節(jié)流會(huì)稀釋函數(shù)的執(zhí)行頻率
常用場景:監(jiān)聽頁面元素滾動(dòng)事件,因?yàn)轫撁嬖貪L動(dòng)是個(gè)高頻觸發(fā)事件
var canRun = true;
document.getElementById("throttle").onscroll = function(){
if(!canRun){
? // 判斷是否已空閑,如果在執(zhí)行中,則直接return
? return;
}
canRun = false;
setTimeout(function(){
? console.log("函數(shù)節(jié)流");
? canRun = true;
}, 300);
};