當前位置:編程學習大全網 - 腳本源碼 - 控制事件觸發頻率的兩種策略:Debounce && Throttle

控制事件觸發頻率的兩種策略:Debounce && Throttle

在我們日常的開發中,以下幾種情況會高頻率的觸發事件:

高頻率的觸發事件,會過度損耗頁面性能,導致頁面卡頓,頁面抖動,尤其是當這些事件回調函數中包含ajax等異步操作的時候,多次觸發會導致返回的內容結果順序不壹致,而導致得到的結果非最後壹次觸發事件對應的結果。

Debounce:壹部電梯停在某壹個樓層,當有壹個人進來後,20秒後自動關門,這20秒的等待期間,又壹個人按了電梯進來,這20秒又重新計算,直到電梯關門那壹刻才算是響應了事件。

Throttle:好比壹臺自動的飲料機,按拿鐵按鈕,在出飲料的過程中,不管按多少這個按鈕,都不會連續出飲料,中間按鈕的響應會被忽略,必須要等這壹杯的容量全部出完之後,再按拿鐵按鈕才會出下壹杯。

這裏我們使用 Lodash 庫裏面實現的debouce和throttle方法。

lodash支持自定義封裝,使用下面兩個命令封裝壹個我們自己的lodash庫。

debounce調用方法: _.debounce(func, [wait=0], [options={}]) 返回壹個具有debounce策略的新函數。

throttle調用方法: _.throttle(func, [wait=0], [options={}]) 返回壹個具有throttle策略的新函數。

下面的例子是在移動端使用 rem 布局常用的壹個函數,偵聽 resize 事件改變根元素的 fontSize ,這種情況下適用debounce策略:

這個例子中,使用 throttle 策略,點擊壹次生成壹行文字,1s中無論怎麽點擊,都只生成壹行文字:

完整demo地址: demo

debounce.js

throttle.js

  • 上一篇:百分百感覺之人小鬼大的電影信息
  • 下一篇:新時代人民英雄的內涵
  • copyright 2024編程學習大全網