函式節流和防抖(二)—— 節流函式
阿新 • • 發佈:2021-01-12
技術標籤:javascriptes6
二、什麼是函式防抖?
1、概念:函式防抖(throttle),是指在連續觸發的事件中,在延遲時間內有且僅執行一次函式。節流如字面意思,會稀釋函式的執行頻率。
2、使用場景:
- 當用戶量很大時,搜尋框中搜索按鈕的連續點選
- 在規定的時間內不準點選第二次,例如使用者名稱、手機號、郵箱輸入驗證功能
3、程式碼實現:
- setTimeout版
function throttle(fun, wait) {
let timer;
return function (...arguments) {
if(timer) {
return;
};
timer = setTimeout(() => {
fun.apply(this, arguments);
timer = null;
}, wait);
}
}
- 時間戳版
function throttle(fun, wait) {
let previous_time = 0;
return function (...arguments) {
let current_time = +new Date();
if(current_time - previous_time > wait) {
fun.apply(this, arguments);
previous_time = current_time;
}
}
}
4、setTimeout版和時間戳版的區別就在於:
setTimeout版中目標函式的觸發是在wait時間結束的時候觸發的,而時間戳版中目標函式的觸發是在wait時間開始的時候觸發的。
每一篇一個知識點,That’s all,thank you.