防抖函式就是指:
觸發某乙個事件後,在一段時間之內
(n秒)只能執行一次,
如果觸發事件後在 n 秒內又觸發了該事件,那麼就會重新計算函式延執行時間,
如果觸發事件後在n秒內沒有在觸發該事件,函式才會執行。
防抖函式的使用時機:
在開發中有一些事件會被頻繁的觸發、比如: scroll,mousemove,mousehover等等,
如果不做處理的話可能一秒內會觸發成百上千次,浪費電腦的資源、也會降低程式執行速度、甚至會把瀏覽器卡死,乃至崩潰,使用防抖函式,可以很好地避免這個問題。
重點來了
使用防抖函式,需要乙個 settimeout 延時器來輔助實現,延遲執行需要執行的**。
如果方法或事件多次觸發,那麼會把上次記錄的延遲執行**用 cleartimeout 清掉,重新開始計時。
如果計時期間事件沒有被重新觸發,等延遲時間計時完畢,則執行目標**。
**簡單例子 **
// 自定義乙個防抖函式
let timer =
null
;function
debounce
(fn, time
) timer =
settimeout
(fn, time);}
};// 需要做防抖的事件或函式
function
mousemove()
;// 需要做防抖操作的事件或函式
你好啊!陣列
今天覆習了一下函式遞迴呼叫的使用方法,知道了函式的遞迴和非遞迴各有千秋,我們要學會處理問題,選擇最適合的方法解決問題。進入今天的主題 陣列。陣列是一組相同型別的元素的集合,它在物理上是一段連續的記憶體。注 陣列建立時,裡要給乙個常量,不能使用變數。求陣列的長度要使用sizeof關鍵字,公式為len ...
你好啊,世界
走在路上的所見所感,一大碗不鹹不淡的雞湯,作為乙個剛入職的大四老學長,借用雄英學院的校訓,在入職第一天記錄下自己的原點,不懈進取,永無止境,學習如此,人生亦如此。我常在想,為什麼我們接觸每門語言所編寫的第乙個程式,往往都是hello world呢?單從英譯漢的角度來看吧,有道給出的釋意是你好世界。如...
函式防抖和節流(一) 防抖函式
一.什麼是函式防抖?1 概念 函式防抖 debounce 就是指觸發事件後,在延遲時間內函式只能執行一次,如果觸發事件後在延遲時間內又觸發了事件,則會重新計算函式延執行時間。等延遲時間計時完畢,則執行目標 2 例如 坐電梯的時候,如果電梯檢測到有人進來 觸發事件 就會多等待 10 秒,此時如果又有人...