函數去抖(debounce)和函數節流(throttle)

目的瀏覽器

如下場景每每因爲事件頻繁被觸發,於是頻繁執行DOM操做、資源加載等重行爲,致使UI停頓甚至瀏覽器崩潰。函數

  • window對象的resizescroll事件
  • 拖拽時的mousemove事件
  • 射擊遊戲中的mousedownkeydown事件
  • 文字輸入、自動完成的keyup事件

throttle(又稱節流)和debounce(又稱去抖)其實都是函數調用頻率的控制器spa

debounce去抖

當調用函數n秒後,纔會執行該動做,若在這n秒內又調用該函數則將取消前一次並從新計算執行時間,舉個簡單的例子,咱們要根據用戶輸入作suggest,每當用戶按下鍵盤的時候均可以取消前一次,而且只關心最後一次輸入的時間就好了。code

 

throttle節流

throttle將一個函數的調用頻率限制在必定閾值內,例如1s內一個函數不能被調用兩次。對象

 

具體實現 不表遊戲

相關文章
相關標籤/搜索