函式節流和函式去抖

2021-09-16 14:05:51 字數 1347 閱讀 3917

在日常的開發過程中,會有這樣的場景,事件被頻繁的觸發,比如說我們的在輸入的時候監控keypress事件,在頁面滾動的時候監控頁面的滾動事件。比如我們監控頁面的resize事件,拉動視窗改變大小的時候,resize事件被頻繁的執行

事件處理函式簡單的話還好,但是如果是複雜的dom操作,可能會導致整個ui卡頓設定瀏覽器奔潰,而我們往往的結果就是事件結束後處理函式執行一次就行了。於是我們可以通過函式的去抖來處理

去抖(debounce)

函式呼叫n秒後才會執行,如果函式在n秒內被呼叫的話則函式不執行,重新計算執行時間(同步不斷重新設定計時器實現,例子:輸入框輸入)

實現**

/**函式的去抖動**/

function debounce(method,delay),delay);}}

測試:

function resizehandler()

window.onresize=debounce(resizehandler,500);

測試結果:

函式去抖是在我們事件結束後的一段時間內才會執行,會有乙個延遲性。現在我們有乙個需求,有乙個輸入框要求輸入聯想,在使用者輸入的過程中,需要按照一定的時間像後台傳送ajax請求,獲取資料。對於這樣的需求,我們可以通過函式節流來實現

函式節流(throttle)

函式預先設定乙個執行週期,當呼叫動作的時刻大於等於執行週期則執行該動作,然後進入下乙個新週期(通過保持動作一定時間觸發方法,例子:保持下拉載入更多)

實現**

/**函式節流**/

function throttle(method,duration)}}

測試:

function resizehandler()

window.οnresize=throttle(resizehandler,500);

結果:

需要注意的一點:函式的節流和函式的去抖都是通過減少實際邏輯處理過程的執行來提高事件處理函式執行效能的手段,並沒有實質上減少事件的觸發次數

函式節流與函式去抖

父元件通過props向子元件傳遞引數 父元件將乙個函式作為props傳遞給子元件,子元件呼叫該 函式,向父元件通訊。中間元件層層傳遞props 存在巢狀太深的問題 使用context物件 推薦 context是全域性容器,靜態屬性,使用條件 父元件要宣告自己支援context,並提供context中...

js 什麼是函式節流與函式去抖

意思 節省流量,不會一直訪問。指定時間內不執行,指定時間後執行。一段時間內只執行一次 場景 比如控制遊戲人物攻擊,時間內就算按得很快,也只能砍一刀,過後才能砍第二刀。搜尋引擎聯想詞。搜尋框的oninput事件節流。引數 乙個函式,乙個時間 返回 乙個函式 對比時間進行處理 function thro...

函式防抖和函式節流

1 函式防抖 函式防抖是指頻繁觸發的情況下,只有足夠的時間,才執行 一次,函式防防抖的要點也是要乙個settimeout來輔助實現,延遲執行需要跑的 如果方法多次觸發,則把上次記錄的延遲執行 用cleartimeout清理掉,重新開始。如果計時完畢,沒有方法來訪問觸發。則執行 函式防抖的應用場景,最...