函式節流你應該知道的那點事,建議收藏!
這裡要給大家引入一個函式節流的概念,他的應用場景還是十分多的。下面小千就給大家分別從概念和案例分開介紹,喜歡的話不妨收藏起來。
什麼是節流?
幼兒園所有的小朋友每天都要做3件事:吃飯、睡覺、打豆豆。只有一個小朋友例外,他的名字叫豆豆。後來,有一位善良勇敢的小朋友站出來說:你們不能這樣打他了,這麼打下去,會把他打死的,那我們以後就只能吃飯睡覺了!!所以從現在開始,我們每隔72小時,只能打1次豆豆,於是大家都紛紛表示贊同並流出了感動的淚水。
豆豆捱打的頻率被降低了,這就叫節流。
列舉一個實際的應用場景
一般情況下,當網頁向下滑動的距離越來越長的時候,在右下角會出現一個回到頂部的按鈕。
它的實現非常的簡單
然而你很快就發現了這段程式的邏輯問題
那就是,scroll這種滾動事件的觸發頻率是非常高的,只要在頁面上稍微滾動一下就會連續觸發十幾甚至二十幾次事件,每一次我們都需要重新計算頁面滾動距離,做判斷,顯示按鈕等操作。
顯然我們對該事件的觸發頻率不需要那麼高,200ms一次似乎已經足夠了。
於是,我們開始動手寫程式碼。
函式節流(未最佳化版本)
如果你仔細的閱讀了上面的程式碼,依然不能理解節流原理,我還有張原理圖給你看
總結:
用節流的方式,可以保證在一段時間內,只有第一次執行是生效的,直到超過了設定的時間段,才有機會執行下一次,大大的降低了原有函式的執行頻率,顧名思義,函式節流。
回過頭來,我們再看程式碼
最後,參考函式防抖,再來做一點最佳化吧
關於函式節流的應用場景,給大家列舉一下,僅供參考
- DOM 元素的拖拽(mousemove)
- 射擊遊戲在單位時間只能發射一顆(mousedown/keydown)
- Canvas 模擬畫板功能(mousemove)
- 懶載入,在滾動過程中判斷是否需要載入圖片(scroll)
- 頁面滾動到底部載入更多(scroll)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31548651/viewspace-2765024/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 每個黑帶大師都應該知道的10件事(建議收藏)
- DOM和Diff演算法你應該知道的那些事,快收藏!演算法
- 你應該知道的Redis事務Redis
- 你應該知道的Node.js流Node.js
- 關於JavaScript的作用域你應該瞭解的那點事!JavaScript
- 你所不知道的 Python 冷知識!(建議收藏)Python
- 你所不知道的 Python 冷知識!(二)(建議收藏)Python
- 你應該知道的緩動知識點
- 你不知道的 TypeScript 泛型(萬字長文,建議收藏)TypeScript泛型
- 你應該知道的RocketMQMQ
- 你應該知道的FlutterFlutter
- 用友雲開發者中心,你應該知道的那些事
- 函式節流與函式防抖函式
- 函式防抖和函式節流函式
- 你不知道的JavaScript--Item8 函式,方法,建構函式呼叫JavaScript函式
- 你不知道的前端異常處理(萬字長文,建議收藏)前端
- 函式的防抖和節流函式
- 函式的防抖與節流函式
- 理解Underscore中的節流函式函式
- 你應該知道的JS —— 物件JS物件
- 區分函式防抖&函式節流函式
- JS函式節流和函式防抖JS函式
- 前端筆記之JavaScript(七)深入函式&DOM那點事前端筆記JavaScript函式
- 你應該知道的關於SEO和Javascript的6個事實JavaScript
- 關於Git小白應該知道的事Git
- [手寫系列] Spirit帶你實現防抖函式和節流函式函式
- JavaScript的程式碼編寫注意事項,建議收藏!JavaScript
- 初識python你應該知道的6個知識點!Python
- Android —— 自定義View中,你應該知道的知識點AndroidView
- 函式防抖和節流函式
- 函式節流和防抖函式
- JS函式節流,去抖JS函式
- 節流函式怎麼寫?函式
- 你應該知道的Linux歷史Linux
- 你應該知道的前端——快取前端快取
- 你應該知道的程式集版本
- 關於 jwt ,你應該知道的JWT
- 你應該知道的前端--儲存前端