1. 概念
函數(shù)節(jié)流:指定時(shí)間間隔內(nèi)只會(huì)執(zhí)行一次任務(wù);
函數(shù)防抖:指任務(wù)頻繁觸發(fā)的情況下,只有任務(wù)觸發(fā)的間隔超過(guò)指定間隔的時(shí)候任務(wù)才會(huì)執(zhí)行;
2. 實(shí)現(xiàn)
//函數(shù)節(jié)流
function throttle(fn, interval){
let canRun = true;
return function(){
if(!canRun) return false;
canRun = false;
setTimeout(()=>{
fn.apply(this, arguments)
canRun = true;
},interval)
}
}
//函數(shù)防抖
function debounce(fn, await){
let timmer = null;
return function(){
clearTimeout(timmer);
timmer = setTimeout(()=>{
fn.apply(this, arguments)
}, await)
}
}
3. 應(yīng)用場(chǎng)景
函數(shù)節(jié)流:監(jiān)聽(tīng)頁(yè)面滾動(dòng)要節(jié)流
函數(shù)防抖:監(jiān)聽(tīng)input輸入要防抖,用戶(hù)短時(shí)間內(nèi)多次點(diǎn)擊同一個(gè)按鈕。