防抖與節(jié)流

防抖

原理:在事件被觸發(fā)n秒后再執(zhí)行回調(diào)勋篓,如果在這n秒內(nèi)又被觸發(fā)槐脏,則重新計(jì)時(shí)废离,最后一次有效。
適用場(chǎng)景:

  • 按鈕提交場(chǎng)景:防止多次提交按鈕绍撞,只執(zhí)行最后提交的一次
  • 服務(wù)端驗(yàn)證場(chǎng)景:表單驗(yàn)證需要服務(wù)端配合正勒,只執(zhí)行一段連續(xù)的輸入事件的最后一次,還有搜索聯(lián)想詞功能類似
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        #iii,
        #jjj {
            height: 100px;
            width: 200px;
            background: lightblue;
            margin-bottom: 10px;
        }
    </style>
</head>
<body>
    <div id="jjj">防抖</div>
</body>
<script>
    // 防抖
    function debounce(fn, wait) {
        let timeout = null;
        return function () {
            if (timeout !== null) clearTimeout(timeout);
            timeout = setTimeout(fn, wait);
        }
    }
    // 處理函數(shù)
    function handle() {
        console.log(Math.random());
    }
    var jjj = document.getElementById('jjj');
    jjj.onclick = debounce.call(this, handle, 1000);
</script>
</html>

節(jié)流

解決問題:防止在單位時(shí)間內(nèi)多次觸發(fā)傻铣。例如拖拽
原理:規(guī)定在一個(gè)單位時(shí)間內(nèi)章贞,只能觸發(fā)一次函數(shù)。如果這個(gè)單位時(shí)間內(nèi)觸發(fā)多次函數(shù)非洲,只有一次生效鸭限。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        body {
            height: 100000px;
        }
    </style>
</head>

<body>
    打開控制臺(tái),滾動(dòng)屏幕
</body>
<script>
    const throttle = (fn, delay = 500) => {
        let flag = true;
        return (...args) => {
            if (!flag) return;
            flag = false;
            setTimeout(() => {
                fn.apply(this, args);
                flag = true;
            }, delay);
        };
    };
    // 處理函數(shù)
    function handle() {
        console.log(Math.random());
    }
    window.addEventListener('scroll', throttle(handle, 1000));
</script>

</html>

適用場(chǎng)景:

  • 拖拽場(chǎng)景:固定時(shí)間內(nèi)只執(zhí)行一次两踏,防止超高頻次觸發(fā)位置變動(dòng)
  • 縮放場(chǎng)景:監(jiān)控瀏覽器resize
  • 動(dòng)畫場(chǎng)景:避免短時(shí)間內(nèi)多次觸發(fā)動(dòng)畫引起性能問題
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末败京,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子梦染,更是在濱河造成了極大的恐慌赡麦,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件弓坞,死亡現(xiàn)場(chǎng)離奇詭異隧甚,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)渡冻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門戚扳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人族吻,你說我怎么就攤上這事帽借。” “怎么了超歌?”我有些...
    開封第一講書人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵砍艾,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我巍举,道長(zhǎng)脆荷,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮蜓谋,結(jié)果婚禮上梦皮,老公的妹妹穿的比我還像新娘。我一直安慰自己桃焕,他們只是感情好剑肯,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著观堂,像睡著了一般让网。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上师痕,一...
    開封第一講書人閱讀 49,741評(píng)論 1 289
  • 那天溃睹,我揣著相機(jī)與錄音,去河邊找鬼七兜。 笑死丸凭,一個(gè)胖子當(dāng)著我的面吹牛福扬,可吹牛的內(nèi)容都是我干的腕铸。 我是一名探鬼主播,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼铛碑,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起窟哺,我...
    開封第一講書人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤屹篓,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后撇吞,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體俗冻,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年牍颈,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了迄薄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡煮岁,死狀恐怖讥蔽,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情画机,我是刑警寧澤冶伞,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站步氏,受9級(jí)特大地震影響响禽,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一芋类、第九天 我趴在偏房一處隱蔽的房頂上張望瀑焦。 院中可真熱鬧,春花似錦梗肝、人聲如沸榛瓮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)禀晓。三九已至,卻和暖如春坝锰,著一層夾襖步出監(jiān)牢的瞬間粹懒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來泰國(guó)打工顷级, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留凫乖,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓弓颈,卻偏偏與公主長(zhǎng)得像帽芽,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子翔冀,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 本篇課題导街,或許早已是爛大街的解讀文章。不過春招系列面試下來纤子,不少伙伴們還是似懂非懂地栽倒在(~面試官~)深意的笑容...
    以樂之名閱讀 1,769評(píng)論 0 9
  • 防抖與節(jié)流搬瑰,其實(shí)是控制事件觸發(fā)頻率的方法。 在網(wǎng)頁(yè)的實(shí)際運(yùn)行的某些場(chǎng)景下控硼,有些事件會(huì)持續(xù)被觸發(fā)泽论,比如resize不...
    喵喵喵不吃小魚干閱讀 304評(píng)論 0 1
  • debounce/防抖:抖完以后在執(zhí)行等待-執(zhí)行 throttle/節(jié)流:按計(jì)劃"節(jié)制"執(zhí)行(我會(huì)直接翻譯成節(jié)制)...
    劉程源閱讀 564評(píng)論 0 0
  • 函數(shù)防抖(debounce) 假設(shè)我們網(wǎng)站有個(gè)搜索框,用戶輸入文本我們會(huì)自動(dòng)聯(lián)想匹配出一些結(jié)果供用戶選擇卡乾。我們可能...
    tobAlier閱讀 2,140評(píng)論 0 1
  • 晨練第395天:站樁30分鐘 讀經(jīng)第275天: 詩(shī)經(jīng)·簡(jiǎn)兮 簡(jiǎn)兮簡(jiǎn)兮翼悴,方將萬舞。日之方中说订,在前上處抄瓦。 碩人俁俁,公...
    山緣有約閱讀 218評(píng)論 0 0