成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

函數(shù)防抖與函數(shù)節(jié)流

J4ck_Chan / 737人閱讀

摘要:這可能會(huì)導(dǎo)致一些嚴(yán)重的性能問題如果在面試中討論構(gòu)建應(yīng)用程序和事件,如滾動(dòng)窗口調(diào)整大小,或鍵盤按下的事件時(shí),一定要提及函數(shù)防抖動(dòng)和函數(shù)節(jié)流來提升頁面速度和性能。

前言

有一些瀏覽器事件可以在很短的事件內(nèi)快速觸發(fā)多次,例如 調(diào)整窗口大小向下滾動(dòng) 頁面。例如,如果將事件監(jiān)聽器綁定到窗口滾動(dòng)事件上,并且用戶繼續(xù)非??焖俚叵蛳聺L動(dòng)頁面,你的事件可能會(huì)在3秒的范圍內(nèi)被觸發(fā)數(shù)千次。這可能會(huì)導(dǎo)致一些嚴(yán)重的性能問題,

如果在面試中討論構(gòu)建應(yīng)用程序和事件,如滾動(dòng)、窗口調(diào)整大小,或鍵盤按下的事件時(shí),一定要提及函數(shù)防抖動(dòng)和函數(shù)節(jié)流來提升頁面速度和性能。

直接綁定函數(shù)到scroll事件是非常錯(cuò)誤的決定,當(dāng)用戶滾動(dòng)頁面時(shí),頁面可能會(huì)變得非常慢甚至未響應(yīng)。而函數(shù)防抖和函數(shù)節(jié)流是解決這個(gè)問題的一種方式,通過限制需要經(jīng)過的事件,直至再次調(diào)用函數(shù),在處理一些高頻率觸發(fā)的 DOM 事件的時(shí)候,它們都能極大提高用戶體驗(yàn)。

函數(shù)防抖

如果一個(gè)事件被頻繁觸發(fā)多次,并且觸發(fā)的時(shí)間間隔過短,則防抖函數(shù)可以使得對應(yīng)的事件處理函數(shù)只執(zhí)行一次

// debounce函數(shù)用來包裹我們的事件處理方法
function debounce(fn, delay){
    // 持久化一個(gè)定時(shí)器
    let timer = null
    
    // 閉包函數(shù)可以訪問timer
    return function(){
        // 通過 this 和 arguments 獲得函數(shù)的作用域和參數(shù)
        let context = this
        let args = arguments
        // 如果事件被觸發(fā),清除timer并重新開始計(jì)時(shí)
        clearTimeout(timer)
        timer = setTimeout(function() {
            fn.apply(context, args)
        }, delay)
    }
}

function foo(){
    console.log("You are scrolling!")
}

document.addEventListener("scroll", debounce(foo, 50));
函數(shù)節(jié)流

throttle 的概念理解稍微容易一些,如果一個(gè)事件被頻繁觸發(fā)多次,節(jié)流函數(shù)可以按照固定頻率去執(zhí)行對應(yīng)的事件處理方法

function throttle(fn, threshold){
    var last
    
    var timer
    
    threshold || (threshold = 250)
    
    return function(){
        let context = this
        let args = arguments
        
        var now = +new Date()
        
        if(last&&now           
               
                                           
                       
                 

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

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/92052.html

相關(guān)文章

  • 小菊花課堂之JS的抖與節(jié)流

    摘要:文章來源詳談防抖和節(jié)流輕松理解函數(shù)節(jié)流和函數(shù)防抖函數(shù)防抖和節(jié)流好啦,今天的小菊花課堂之的防抖與節(jié)流的內(nèi)容就告一段落啦,感各位能耐心看到這里。 前言 陸游有一首《冬夜讀書示子聿》——古人學(xué)問無遺力,少壯工夫老始成。紙上得來終覺淺,絕知此事要躬行。,其中的意思想必大家都能明白,在學(xué)習(xí)或工作中,不斷的印證著這首詩的內(nèi)涵。所以,又有了此篇小菊花文章。 詳解 在前端開發(fā)中,我們經(jīng)常會(huì)碰到一些會(huì)持...

    leoperfect 評論0 收藏0
  • 小菊花課堂之JS的抖與節(jié)流

    摘要:文章來源詳談防抖和節(jié)流輕松理解函數(shù)節(jié)流和函數(shù)防抖函數(shù)防抖和節(jié)流好啦,今天的小菊花課堂之的防抖與節(jié)流的內(nèi)容就告一段落啦,感各位能耐心看到這里。 前言 陸游有一首《冬夜讀書示子聿》——古人學(xué)問無遺力,少壯工夫老始成。紙上得來終覺淺,絕知此事要躬行。,其中的意思想必大家都能明白,在學(xué)習(xí)或工作中,不斷的印證著這首詩的內(nèi)涵。所以,又有了此篇小菊花文章。 詳解 在前端開發(fā)中,我們經(jīng)常會(huì)碰到一些會(huì)持...

    Yangder 評論0 收藏0
  • JavaScript:函數(shù)抖與函數(shù)節(jié)流

    摘要:函數(shù)防抖簡單實(shí)現(xiàn)模擬請求獲取函數(shù)的作用域和變量清除定時(shí)器節(jié)流名詞解釋連續(xù)執(zhí)行函數(shù),每隔一定時(shí)間執(zhí)行函數(shù)。效果函數(shù)防抖是某一段時(shí)間內(nèi)只執(zhí)行一次函數(shù)節(jié)流是間隔時(shí)間執(zhí)行,不管事件觸發(fā)有多頻繁,都會(huì)保證在規(guī)定時(shí)間內(nèi)一定會(huì)執(zhí)行一次真正的事件處理函數(shù)。 防抖(debounce) 名詞解釋:在事件被觸發(fā)n秒后再執(zhí)行回調(diào)函數(shù),如果在這n秒內(nèi)又被觸發(fā),則重新計(jì)時(shí)。 使用場景:以百度輸入框例,比如你要查詢...

    elina 評論0 收藏0
  • 高級函數(shù)技巧-函數(shù)抖與節(jié)流

    摘要:封裝方法也比較簡單,書中對此問題也進(jìn)行了處理使用定時(shí)器,讓函數(shù)延遲秒后執(zhí)行,在此秒內(nèi),然后函數(shù)再次被調(diào)用,則刪除上次的定時(shí)器,取消上次調(diào)用的隊(duì)列任務(wù),重新設(shè)置定時(shí)器。 在實(shí)際開發(fā)中,函數(shù)一定是最實(shí)用最頻繁的一部分,無論是以函數(shù)為核心的函數(shù)式編程,還是更多人選擇的面向?qū)ο笫降木幊?,都?huì)有函數(shù)的身影,所以對函數(shù)進(jìn)行深入的研究是非常有必要的。 函數(shù)節(jié)流 比較直白的說,函數(shù)節(jié)流就是強(qiáng)制規(guī)定一...

    whinc 評論0 收藏0
  • 前端進(jìn)擊的巨人(八):淺談函數(shù)抖與節(jié)流

    摘要:隆重請出主角防抖與節(jié)流。防抖與節(jié)流的異同相同都是防止某一時(shí)間段內(nèi),函數(shù)被頻繁調(diào)用執(zhí)行,通過時(shí)間頻率控制,減少回調(diào)函數(shù)執(zhí)行次數(shù),來實(shí)現(xiàn)相關(guān)性能優(yōu)化。參考文章分鐘理解的節(jié)流防抖及使用場景函數(shù)防抖和節(jié)流 showImg(https://segmentfault.com/img/bVburM8?w=800&h=600); 本篇課題,或許早已是爛大街的解讀文章。不過春招系列面試下來,不少伙伴們還...

    _Zhao 評論0 收藏0
  • 抖與節(jié)流(源碼學(xué)習(xí))

    摘要:防抖與節(jié)流源碼學(xué)習(xí)最近自己擼了一個(gè)輪播圖,在點(diǎn)擊切換的時(shí)候,為了尋求更好的用戶體驗(yàn),引入了節(jié)流,在此記錄對源碼的學(xué)習(xí)過程源碼來源防抖函數(shù)防抖使用場景現(xiàn)在我們需要做一個(gè)搜索框,當(dāng)用戶輸入文字,執(zhí)行事件的時(shí)候,需要發(fā)出異步請求去進(jìn)行結(jié)果查詢。 防抖與節(jié)流(源碼學(xué)習(xí)) 最近自己擼了一個(gè)輪播圖,在點(diǎn)擊切換的時(shí)候,為了尋求更好的用戶體驗(yàn),引入了節(jié)流,在此記錄對源碼的學(xué)習(xí)過程源碼來源:unders...

    instein 評論0 收藏0

發(fā)表評論

0條評論

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