面試經常會被問到的節流和防抖,一分鐘理解
導語:
最近整理面試題目,經常能夠看到手寫節流和防抖函式,已經它們的用處。一分鐘學會它們。
微信搜尋 【web小館】,回覆 ”全棧部落格專案“,即可獲取 專案原始碼和後續的實戰文章教程。
一,防抖
1,定義和原理
- 定義:防抖,即如果短時間內大量觸發同一事件,都會重置計時器,等到事件不觸發了,再等待規定的事件,才會執行函式。
(舉個簡單的例子,就是如果你在我這篇博文瘋狂點贊再取消贊,這個過程都會把計時器清空,等到你點累了不點了,等待0.5秒,才會觸發函式,把你最終結果傳給伺服器。)而這整個過程就觸發了一次點贊函式到伺服器。
- 原理:設定一個定時器,設定在規定的時間後觸發事件處理,每次觸發事件都會重置計時器。
2,用處
防抖用於搜尋框和滾動的監聽事件處理,如果沒有防抖,那麼每輸入一個字或者滾動螢幕,都會觸發事件,甚至一秒鐘觸發幾十次,效能就會浪費。
function debounce(fn, delay = 500) {
let timer = null
return function () {
if (timer) {
clearTimeout(timer) //如果timer有定義,清空
}
timer = setTimeout(() => {
fn.apply(this, arguments)
timer = null
}, delay)
}
}
一,節流
1,定義和原理
- 定義:每隔一段時間就執行一次。
- 原理:設定一個定時器,設定0.5秒後執行事件,如果時間到了,就會執行函式並重置定時器,等待下一個0.5秒後再執行。
2,用處
滾動欄的位置查詢,就能設定每0.5秒執行一次函式。
function throttle(fn, delay = 100) {
let timer = null
return function () {
if (timer) {
return
}
timer = setTimeout(() => {
fn.apply(this, arguments)
timer = null
}, delay)
}
}
結語:
建議收藏,不然刷著刷著就可能找不到了。
有什麼前端的問題歡迎私信我~期待你的到來。
同時你的點贊是對我最大的鼓勵,謝謝。
相關文章
- 防抖和節流
- 面試必問題:JS防抖與節流面試JS
- 7分鐘理解JS的節流、防抖及使用場景JS
- js防抖和節流JS
- 函式的防抖和節流函式
- 函式防抖和節流函式
- 防抖和節流原理分析
- 函式節流和防抖函式
- 如何全面出色的回答面試官防抖與節流提問?面試
- js 函式防抖和節流JS函式
- js防抖 和節流函式JS函式
- 輕鬆理解JS函式節流和函式防抖JS函式
- 前端面試查漏補缺--(一) 防抖和節流前端面試
- js函式中的節流和防抖JS函式
- 節流防抖封裝封裝
- UnderScore原始碼看防抖和節流原始碼
- 效能優化之防抖和節流優化
- JavaScript專題系列-防抖和節流JavaScript
- 函式防抖和函式節流函式
- 固定表頭和首列,防抖節流
- 函式的防抖與節流函式
- 深入理解函式節流與函式防抖函式
- js函式防抖debounce和節流throttleJS函式
- 防抖動處理和節流 小技巧
- JS函式節流和函式防抖JS函式
- JS簡單實現防抖和節流JS
- 蝦扯蛋之函式防抖和節流函式
- 例項解析防抖動和節流閥
- JavaScript之節流與防抖JavaScript
- 筆記-JavaScript[節流][防抖]筆記JavaScript
- 防抖和節流的應用場景和實現
- 前端都應該要掌握的防抖和節流前端
- 淺談JavaScript的防抖與節流JavaScript
- JavaScript淺析 -- 定時器和節流防抖JavaScript定時器
- 2019 面試準備 - JS 防抖與節流面試JS
- JavaScript中函式防抖、節流JavaScript函式
- 當Flutter遇到節流與防抖Flutter
- js優化之防抖節流JS優化