無(wú)論防抖還是節(jié)流焚虱,目的是減少函數(shù)執(zhí)行頻率或次數(shù)
先說(shuō)節(jié)流购裙,都用過(guò)水龍頭吧,怎么節(jié)約水鹃栽?調(diào)整閥門躏率,水線變?yōu)辄c(diǎn),一滴一滴民鼓,這就是節(jié)流
有個(gè)按鈕禾锤, 瘋狂點(diǎn), 回調(diào)函數(shù)瘋狂執(zhí)行摹察,就像一條線恩掷,如下圖所示
函數(shù)被節(jié)流后,即使瘋狂點(diǎn)供嚎,仍像節(jié)流后的水龍頭黄娘,一滴一滴的執(zhí)行
線and點(diǎn).png
這是我隨手畫的...有點(diǎn)丑就別計(jì)較了
展示一下代碼吧, 自己寫的,可以提意見克滴,比如把時(shí)間提出來(lái)逼争。。劝赔。
function throttle(func){
let exec = true
let timer = null
return function(){
if(exec){
func()
exec= false
}else{
if(timer){}
else{
timer = setTimeout(()=>{
exec = true
// clearTimeout(timer)
timer = null
},1000)
}
}
}
}
節(jié)流說(shuō)了誓焦,說(shuō)一下防抖吧,相對(duì)于節(jié)流着帽,防抖簡(jiǎn)單一點(diǎn)
防抖的思想就是在一段時(shí)間內(nèi)杂伟,只延時(shí)執(zhí)行一次目標(biāo)函數(shù)
有一個(gè)網(wǎng)站,很長(zhǎng)仍翰,就是由滾動(dòng)條赫粥,如果這個(gè)網(wǎng)站有段類似這樣的代碼:
window.addEventListener('scroll',handle)
那么拉動(dòng)滾動(dòng)條,就會(huì)瘋狂回調(diào)hanle函數(shù)
為了減少回調(diào)次數(shù)予借,可以使用防抖越平,直接上代碼吧
function debounce(func){
let timer = null
return function(){
if(timer){clearTimeout(timer)}
timer= setTimeout(()=>{
func()
},1000)
}
}