函式節流器

2022-07-20 19:33:10 字數 909 閱讀 3338

1:函式節流器

函式節流的基本思想是設定乙個定時器,在指定時間間隔內執行**時清楚上一次的定時器,並設定另乙個定時器,知道函式請求停止並超過時間間隔才會執行。

function

scrollfn()

function

throttle(method,context),300)

}window.onscroll=function

()

throttle函式接收兩個引數,即要執行的函式及執行環境,如果執行環境未定義,預設則為windows。在這個函式中,會在第一次執行時為method頂乙個定時器屬性,在指定時間間隔(300)內再次執行時會清楚上一次定義的定時器並建立新定時器知道停止。

2:網上還有一種解決方案:

function

throttle(method,delay),delay);

}}

呼叫結果和第一種結果相同,都能有效的阻止函式重複呼叫,不同的是,第一種將定時器設定為函式的乙個屬性,而第二種方案通過閉包來實現。首先在函式內定義乙個變數timer,然後返回乙個函式,我們知道由於在返回函式中包含對timer的引用,因此timer並不會立即被清除。(我們也可以將timer定義為全域性變數)。

以上兩種方案存在乙個問題,即如果事件一直觸發,那麼函式將永遠不會被執行,這在某些時候並不符合我們的需求,可能我們只是想在規定時間內減少函式執行次數,所以對以上函式做如下改進:

function

scrollfn()

function

throttle(method,delay,duration)

else

,delay);}}

}window.onscroll=throttle(scrollfn,100,500)

鏈結

javascript函式節流

應用場景 實時輸入檢測 如根據使用者輸入文本來實時查詢資料 判斷註冊使用者名稱是否重複 郵箱格式檢驗 頁面滾動操作onscroll事件 頁面視窗大小改變onresize事件 滑鼠移入移出事件onmouseover,onmouseout 對於以上高頻率的執行操作來說如果不進行節流控制的話,一旦請求頻繁...

JavaScript 函式節流

個人理解 瀏覽器某個事件觸發的平率非常高 例如onscroll事件 如果每次都去執行處理事件的邏輯,消耗大量的cpu資源導致瀏覽器卡死,因此需要在一段時間內只執行最後一次函式的函式叫做函式節流。n 0 function resizehandler function throttle method,c...

函式節流總結

函式節流 在呼叫window.onresize事件時,如果操作頻繁操作dom極為耗效能,因此在這種情況下可以通過定時器對該函式進行節流。函式節流背後的基本思想是 某些 不可以在沒有間斷的情況連續重複執行。第一次呼叫函式,建立乙個定時器,在指定的間隔之後執行 第二次呼叫函式,它會清除前一次的定時器並設...