8、節流函數
什么是節流函數?
指規定一個單位時間,在這個單位時間內,只能有一次觸發事件的回調函數執行,如果在同一個單位時間內某事件被觸發多次,只有一次能生效。
與防抖函數有什么區別?
防抖函數是延遲函數執行,直到事件停止觸發一段時間后再執行,適用于需要等待事件停止觸發后再執行的場景。而節流函數則是控制函數在指定時間內只執行一次,適用于需要控制執行頻率的場景。
function throttle(fn, wait) {let preTime = new Date();return function () {let context = this;let args = arguments;let curTime = new Date();let during = curTime - preTime;if (during > wait) {// 當時間大于等待時間的時候// 執行函數fn.apply(context, args);// 更新 preTimepreTime = curTime;}};}
() => {
fn.apply(context , args);//保證函數的上下文和參數與原始調用時一致
} , wait)
}
}
## 8、節流函數**什么是節流函數?**指規定一個單位時間,在這個單位時間內,只能有一次觸發事件的回調函數執行,如果在同一個單位時間內某事件被觸發多次,只有一次能生效。**與防抖函數有什么區別?**防抖函數是延遲函數執行,直到事件停止觸發一段時間后再執行,適用于需要等待事件停止觸發后再執行的場景。而節流函數則是控制函數在指定時間內只執行一次,適用于需要控制執行頻率的場景。
function throttle(fn, wait) {
let preTime = new Date();
return function () {
let context = this;
let args = arguments;
let curTime = new Date();
let during = curTime - preTime;
if (during > wait) {
// 當時間大于等待時間的時候
// 執行函數
fn.apply(context, args);
// 更新 preTime
preTime = curTime;
}
};
}