JavaScript 函數節流(throttle)是一種優化手段,用于限制某個函數在指定時間間隔內只能執行一次。這在處理高頻觸發事件(如滾動、窗口大小調整等)時非常有用,可以提高性能。
以下是一個簡單的 JavaScript 函數節流實現:
function throttle(func, delay) {
let lastCall = 0; // 上次調用的時間戳
let timer = null; // 定時器
return function (...args) {
const now = Date.now(); // 當前時間戳
if (now - lastCall >= delay) {
// 如果距離上次調用已經超過指定的時間間隔,則立即執行函數
lastCall = now;
func.apply(this, args);
} else if (!timer) {
// 如果距離上次調用還未超過指定的時間間隔,則設置一個定時器,在指定時間間隔后執行函數
timer = setTimeout(() => {
lastCall = Date.now();
func.apply(this, args);
timer = null;
}, delay - (now - lastCall));
}
};
}
使用示例:
function onScroll() {
console.log('滾動事件觸發');
}
const throttledOnScroll = throttle(onScroll, 200);
window.addEventListener('scroll', throttledOnScroll);
在這個示例中,onScroll
函數會在滾動事件觸發時被節流,確保在 200 毫秒內最多執行一次。