国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

js中函數(shù)節(jié)流&函數(shù)去抖

王軍 / 2888人閱讀

摘要:節(jié)流保證在一定時(shí)間內(nèi),只能觸發(fā)一次。我們?cè)趪L試一下去抖消抖,消除抖動(dòng),感覺(jué)這個(gè)更好聽(tīng)有沒(méi)有什么現(xiàn)成的上的一次發(fā)現(xiàn)源碼的經(jīng)歷以及對(duì)學(xué)術(shù)界拿來(lái)主義的思考函數(shù)節(jié)流和函數(shù)去抖應(yīng)用場(chǎng)景辨析函數(shù)去抖的實(shí)現(xiàn)

開(kāi)篇先提幾個(gè)問(wèn)題?

1.做搜索框的時(shí)候你使用什么事件?change?blur?keyup?你想要的效果是什么?
2.scroll事件怎么就觸發(fā)?是滾一段距離觸發(fā)一次?還是滾一圈觸發(fā)一次?還是滾一次觸發(fā)一次?你想要那種?
3.mouseover事件是怎么觸發(fā)呢?

帶著我們的問(wèn)題我們研究一下 throttle & debounce 是什么意思。

1.throttle節(jié)流,scroll和mouseover亦或者其他方式,每次移動(dòng)都會(huì)觸發(fā)代碼效果,但是這些效果太密集了,占用了系統(tǒng)資源,計(jì)算機(jī)的計(jì)算能力是有限的,我們寫(xiě)的代碼應(yīng)該盡可能的優(yōu)雅。
2.debounce去抖,本意是從 按鍵去抖 過(guò)來(lái)的,讓我們的用戶正確的操作之后才去執(zhí)行代碼,且只會(huì)執(zhí)行一次,比如當(dāng)我們做文本輸入的時(shí)候,如果用keyup我們不是去節(jié)流,而是去判斷用戶停止了輸入。
3.節(jié)流保證在一定時(shí)間內(nèi),只能觸發(fā)一次。如果我們只要觸發(fā)一次,這就是去抖。代碼上來(lái)看差距不是很大。

好了接下里我們來(lái)自己寫(xiě)一個(gè),嘗試一番
//先來(lái)個(gè)有問(wèn)題的代碼
window.onscroll=function(){
    console.log(new Date());
}


看控制臺(tái)的輸出。知道這個(gè)有多么的恐怖了吧。

//我們先來(lái)個(gè)節(jié)流,每秒輸出一次
window.onscroll=function(){
    if(window.onScrollTag == undefined){
        window.onScrollTag=true;
        console.log(new Date());
        setTimeout(function(){
            window.onScrollTag=undefined;
        },1000);
    }
}//先觸發(fā)
window.onscroll=function(){
    if(window.onScrollTag == undefined){
        window.onScrollTag=setTimeout(function(){
            window.onScrollTag=undefined;
             console.log(new Date());
        },1000);
       
    }
}//后觸發(fā)
//從上面的代碼可以看出來(lái),我們?cè)谝粋€(gè)事件執(zhí)行的時(shí)候就把標(biāo)記改成不可用。一秒后才可以再次觸發(fā)操作。
//我們?cè)趪L試一下去抖
window.onscroll=function(){
    if(window.onScrollTag != undefined){
        clearTimeout(window.onScrollTag);
    }
    window.onScrollTag=setTimeout(function(){
         console.log(new Date());
    },1000);
}//消抖,消除抖動(dòng),感覺(jué)這個(gè)更好聽(tīng)
有沒(méi)有什么現(xiàn)成的?

underscore,github上的
一次發(fā)現(xiàn)underscore源碼bug的經(jīng)歷以及對(duì)學(xué)術(shù)界『拿來(lái)主義』的思考
JavaScript 函數(shù)節(jié)流和函數(shù)去抖應(yīng)用場(chǎng)景辨析
underscore 函數(shù)去抖的實(shí)現(xiàn)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/91109.html

相關(guān)文章

  • JS函數(shù)去抖節(jié)流

    摘要:上段代碼的一個(gè)問(wèn)題是,事件會(huì)在定時(shí)器結(jié)束后被觸發(fā),因此會(huì)出現(xiàn)一定的延遲,如果想讓事件被立即觸發(fā),可以使用以下的去抖函數(shù)但是,對(duì)于去抖來(lái)說(shuō),在某些場(chǎng)景下是不合適的,因此我們可以使用節(jié)流。 參考文章游戲星人眼中的節(jié)流與去抖(很生動(dòng)) 函數(shù)去抖與節(jié)流 Debounce:函數(shù)去抖就是對(duì)于一定時(shí)間段的連續(xù)的函數(shù)調(diào)用,只讓其執(zhí)行一次Throttle:函數(shù)節(jié)流就是讓連續(xù)執(zhí)行的函數(shù),變成固定時(shí)間段間斷...

    fuchenxuan 評(píng)論0 收藏0
  • JS專題之節(jié)流函數(shù)

    摘要:一什么是節(jié)流節(jié)流函數(shù)就是讓事件處理函數(shù)在大于等于執(zhí)行周期時(shí)才能執(zhí)行,周期之內(nèi)不執(zhí)行,即事件一直被觸發(fā),那么事件將會(huì)按每小段固定時(shí)間一次的頻率執(zhí)行。我們通過(guò)一個(gè)簡(jiǎn)單的示意來(lái)理解節(jié)流函數(shù)可以用時(shí)間戳和定時(shí)器兩種方式進(jìn)行處理。 本文共 2000 字,讀完只需 8 分鐘 上一篇文章講了去抖函數(shù),然后這一篇講同樣為了優(yōu)化性能,降低事件處理頻率的節(jié)流函數(shù)。 一、什么是節(jié)流? 節(jié)流函數(shù)(thrott...

    huaixiaoz 評(píng)論0 收藏0
  • JS專題之去抖函數(shù)

    摘要:如果本次定時(shí)器沒(méi)有被清除,時(shí)間到后就會(huì)自然執(zhí)行事件處理函數(shù)。綁定去抖后的事件回調(diào)函數(shù)綁定回調(diào)函數(shù)的屬性方法,點(diǎn)擊頁(yè)面,重置去抖效果異步請(qǐng)求清空上一次事件觸發(fā)的定時(shí)器重置為從而下一次事件觸發(fā)就能立即執(zhí)行。 一、前言 為什么會(huì)有去抖和節(jié)流這類工具函數(shù)? 在用戶和前端頁(yè)面的交互過(guò)程中,很多操作的觸發(fā)頻率非常高,比如鼠標(biāo)移動(dòng) mousemove 事件, 滾動(dòng)條滑動(dòng) scroll 事件, 輸...

    ivydom 評(píng)論0 收藏0
  • JavaScript 函數(shù)節(jié)流函數(shù)去抖應(yīng)用場(chǎng)景辨析

    摘要:函數(shù)節(jié)流和去抖的出現(xiàn)場(chǎng)景,一般都伴隨著客戶端的事件監(jiān)聽(tīng)。函數(shù)節(jié)流的核心是,讓一個(gè)函數(shù)不要執(zhí)行得太頻繁,減少一些過(guò)快的調(diào)用來(lái)節(jié)流。 概述 也是好久沒(méi)更新 源碼解讀,看著房?jī)r(jià)蹭蹭暴漲,心里也是五味雜陳,對(duì)未來(lái)充滿恐懼和迷茫 ...(敢問(wèn)一句你們上岸了嗎) 言歸正傳,今天要介紹的是 underscore 中兩個(gè)重要的方法,函數(shù)節(jié)流和函數(shù)去抖。這篇文章不會(huì)涉及具體的代碼實(shí)現(xiàn)(關(guān)于代碼實(shí)現(xiàn)請(qǐng)期...

    ZHAO_ 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<