溫馨提示×

JavaScript函數節流如何實現

小樊
36
2025-08-28 12:36:34
欄目: 編程語言

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 毫秒內最多執行一次。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女