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

資訊專欄INFORMATION COLUMN

理解節(jié)流與防抖

glumes / 2038人閱讀

摘要:節(jié)流節(jié)流限制了一個函數(shù)可以在短時間內(nèi)被調(diào)用的次數(shù)。更新防抖防抖確保了一個函數(shù)只有在一個固定時間段內(nèi)沒有被調(diào)用過后,才會再次被調(diào)用。再換句話說防抖會等待事件不再高頻發(fā)生,再觸發(fā)。這個網(wǎng)站很好的可視化了節(jié)流與防抖。

節(jié)流 Throttling

節(jié)流限制了一個函數(shù)可以在短時間內(nèi)被調(diào)用的次數(shù)。可以這樣形容:在一毫秒內(nèi)最多執(zhí)行此函數(shù) 1 次。

Throttling enforces a maximum number of times a function can be called over time. As in "execute this function at most once every 100 milliseconds."
再換句話說:

節(jié)流會忽略在短時間內(nèi)高頻發(fā)生的事件,只按照計劃好的頻率觸發(fā)。

//fn 要執(zhí)行的函數(shù)
//delay 計劃好的執(zhí)行間隔
//返回一個函數(shù)

function throttled(fn, delay) {
    let lastCall = 0;//初始化lastCall
    return function (...args) {
        const now = (new Date).getTime();//當(dāng)函數(shù)被運(yùn)行,獲取當(dāng)前時間
        if (now - lastCall < delay) {
        
        //這里(now - lastCall)就是間隔時間
           
            return;//如果間隔時間小于計劃好的執(zhí)行間隔,什么也不做。
        }
        lastCall = now; //更新lastCall
        return fn(...args);
    } 
}
防抖 Debouncing

防抖確保了一個函數(shù)只有在一個固定時間段內(nèi)沒有被調(diào)用過后,才會再次被調(diào)用。可以這樣形容:比如說只有在 1 毫秒過后,才允許執(zhí)行這個函數(shù)。

Debouncing enforces that a function not be called again until a certain amount of time has passed without it being called. As in "execute this function only if 100 milliseconds have passed without it being called."
再換句話說:

防抖會等待事件不再高頻發(fā)生,再觸發(fā)。

//fn 要執(zhí)行的函數(shù)
//delay 計劃好的等待時間
//返回一個函數(shù)

function debounced(delay, fn) {
  let timerId;
  return function (...args) {
    if (timerId) {//如果正在一個timeout中
      clearTimeout(timerId);//中斷timeout,不會發(fā)生setTimeout的回調(diào)函數(shù)
    }
    timerId = setTimeout(() => {//開始新的timeout
      fn(...args);
      timerId = null;
    }, delay);
  }
}
結(jié)論

節(jié)流在我們不關(guān)心函數(shù)參數(shù)是什么的時候比較有用,比如鼠標(biāo)移動,滾輪事件,我們在乎的是操作的頻率。

防抖在我們關(guān)心高頻事件發(fā)生過后,得到的那個結(jié)果的時候,比較有用,比如用戶迅速輸入完一串用戶名,對其進(jìn)行查重的結(jié)果。

這個網(wǎng)站 很好的可視化了節(jié)流與防抖。

參考信息

The Difference Between Throttling and Debouncing

Understanding Throttling and Debouncing

Debouncing and Throttling Explained Through Examples

Throttling and debouncing in JavaScript

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

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

相關(guān)文章

  • JavaScript之節(jié)流防抖

    摘要:個人博客原文地址背景我們在開發(fā)的過程中會經(jīng)常使用如等事件,如果正常綁定事件處理函數(shù)的話,有可能在很短的時間內(nèi)多次連續(xù)觸發(fā)事件,十分影響性能。 個人博客原文地址 背景 我們在開發(fā)的過程中會經(jīng)常使用如scroll、resize、touchmove等事件,如果正常綁定事件處理函數(shù)的話,有可能在很短的時間內(nèi)多次連續(xù)觸發(fā)事件,十分影響性能。因此針對這類事件要進(jìn)行節(jié)流或者防抖處理 節(jié)流 節(jié)流的意思...

    wayneli 評論0 收藏0
  • The debounce & throttle in Javascript(防抖節(jié)流

    摘要:您的支持是我最大的動力,我會保證提供高質(zhì)與清晰的文章與您共同成長。一些文章中的與上面所談到的設(shè)置類似。防抖防抖技術(shù)允許我們捆綁多個連續(xù)調(diào)用成為單一的一次調(diào)用。防抖的應(yīng)用這個簡單的舉個 歡迎star和watch我的github issue blog,歡迎加入討論。您的支持是我最大的動力,我會保證提供高質(zhì)與清晰的文章與您共同成長。 節(jié)流[throttle]與防抖[debounce]在前...

    XboxYan 評論0 收藏0
  • 淺談節(jié)流防抖

    摘要:節(jié)流和防抖在開發(fā)項(xiàng)目過程中很常見,例如輸入實(shí)時搜索滾動更新了,等等,大量的場景需要我們對其進(jìn)行處理。防抖多次觸發(fā),只在最后一次觸發(fā)時,執(zhí)行目標(biāo)函數(shù)。節(jié)流限制目標(biāo)函數(shù)調(diào)用的頻率,比如內(nèi)不能調(diào)用次。 節(jié)流和防抖在開發(fā)項(xiàng)目過程中很常見,例如 input 輸入實(shí)時搜索、scrollview 滾動更新了,等等,大量的場景需要我們對其進(jìn)行處理。我們由 Lodash 來介紹,直接進(jìn)入主題吧。 Lod...

    thursday 評論0 收藏0
  • 從lodash源碼學(xué)習(xí)節(jié)流防抖

    摘要:首先重置防抖函數(shù)最后調(diào)用時間,然后去觸發(fā)一個定時器,保證后接下來的執(zhí)行。這就避免了手動管理定時器。 ??之前遇到過一個場景,頁面上有幾個d3.js繪制的圖形。如果調(diào)整瀏覽器可視區(qū)大小,會引發(fā)圖形重繪。當(dāng)圖中的節(jié)點(diǎn)比較多的時候,頁面會顯得異常卡頓。為了限制類似于這種短時間內(nèi)高頻率觸發(fā)的情況,我們可以使用防抖函數(shù)。 ??實(shí)際開發(fā)過程中,這樣的情況其實(shí)很多,比如: 頁面的scroll事件 ...

    CloudDeveloper 評論0 收藏0
  • 節(jié)流 - 理解,實(shí)踐與實(shí)現(xiàn)

    摘要:節(jié)流分流,與防抖去抖實(shí)現(xiàn)原理相似。本文主要討論節(jié)流,鏡像文章防抖理解,實(shí)踐與實(shí)現(xiàn)。分開討論防抖和節(jié)流,主要是為了讓一些還不太了解節(jié)流防抖的讀者能夠有針對性地,逐一掌握它們。上方為未節(jié)流模式,每一次觸發(fā)都會繪制一個圓點(diǎn)。 showImg(https://segmentfault.com/img/bVbqMwN?w=1280&h=720); 節(jié)流(分流),與防抖(去抖)實(shí)現(xiàn)原理相似。本文主...

    layman 評論0 收藏0

發(fā)表評論

0條評論

glumes

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<