三分鐘了解函數(shù)防抖

鼠標滾動(scroll)、調整窗口大?。╮esize)、敲擊鍵盤(keyup)這類事件在觸發(fā)時往往頻率極高,這時事件對應的回調函數(shù)會反復執(zhí)行,如果回調函數(shù)內包含復雜的運算邏輯或者DOM操作等,就可能造成瀏覽器的不流暢。而防抖和節(jié)流就是為了優(yōu)化此類問題的,兩者并不會減少事件的觸發(fā),而是減少事件觸發(fā)時回調函數(shù)的執(zhí)行次數(shù)。
下面我們就先來重點了解以下防抖吧!

防抖:事件短時間內高頻次觸發(fā),但是只有在規(guī)定時間內不再觸發(fā)后才執(zhí)行回調
原理:防抖是維護一個計時器,規(guī)定在delay時間后觸發(fā)函數(shù),但是在delay時間內再次觸發(fā)的話,都會清除當前的 timer 然后重新設置超時調用,即重新計時。這樣一來,只有最后一次操作能被觸發(fā)。
應用場景:

  1. 用戶在輸入框中連續(xù)輸入一串字符后,只會在輸入完后去執(zhí)行最后一次的查詢請求,這樣可以有效減少請求次數(shù),節(jié)約請求資源;
    2.window的resize、scroll事件,不斷地調整瀏覽器的窗口大小、或者滾動時會觸發(fā)對應事件,防抖讓其只觸發(fā)一次
    下面直接看代碼
<script>
        chengeFs()
        function chengeFs(){
            document.documentElement.style.fontSize = document.documentElement.clientWidth / 10 + 'px';

        }
        var timer = null;
        window.onresize = function () {
            if(timer){
                clearTimeout(timer);
                timer = null;
            }
            timer = setTimeout(chengeFs,300)
        }
    </script>
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容