debounce vs throttle

debounce vs throttle

debounce假設你正在乘電梯上樓,當電梯門關閉之前發現有人也要乘電梯,禮貌起見,你會按下開門開關,然後等他進電梯;如果在電梯門關閉之前,又有人來了,你會繼續開門;這樣一直進行下去,你可能需要等待幾分鐘,最終沒人進電梯了,纔會關閉電梯門,然後上樓。

debounce作用,當調用動作觸發一段時間後,纔會執行該動作,若在這段時間間隔內又調用此動作則將重新計算時間間隔。

throttle假設你正在乘電梯上樓,當電梯門關閉之前發現有人也要乘電梯,禮貌起見,你會按下開門開關,然後等他進電梯;但是,你是個沒耐心的人,你最多隻會等待電梯停留一分鐘;在這一分鐘內,你會開門讓別人進來,但是過了一分鐘之後,你就會關門,讓電梯上樓。

throttle作用 預先設定一個執行週期,當調用動作的時刻大於等於執行週期則執行該動作,然後進入下一個新的時間週期。

throttle跟debounce的最大不同就是,throttle會有一個閥值,當到達閥值的時候action必定會執行一次。

  • debounce:把觸發非常頻繁的事件合併成一次執行(如鍵盤事件,ajax,onsize,onscroll等事件)
  • throttle:設置一個閥值,在閥值內,把觸發的事件合併成一次執行;當到達閥值,必定執行一次事件(如拖拽div,窗口滾動等)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章