最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在JavaScript中實現(xiàn)防抖和節(jié)流的方法詳解

 更新時間:2026年03月26日 08:56:13   作者:用戶975147075136  
文章介紹了防抖和節(jié)流的基本原理,提供了最常用的防抖和節(jié)流的實現(xiàn)代碼,并附帶了使用示例,同時,文章還討論了帶立即執(zhí)行的防抖,以及如何快速記憶這兩種技術(shù),最后,文章提出可以為有需要的讀者編寫一個更高級的防抖節(jié)流版本,需要的朋友可以參考下

下面給你最常用、最標準、直接可復(fù)制的防抖 & 節(jié)流實現(xiàn),附帶使用示例,一看就會。

1. 防抖(Debounce)

原理:頻繁觸發(fā)時,只在最后一次觸發(fā)后延遲執(zhí)行,中間全部忽略。

最簡實現(xiàn)

function debounce(fn, delay = 300) {
  let timer = null;

  return function (...args) {
    clearTimeout(timer);
    timer = setTimeout(() => {
      fn.apply(this, args);
    }, delay);
  };
}

使用示例(搜索框)

const onSearch = debounce((value) => {
  console.log("請求搜索:", value);
}, 500);

input.addEventListener("input", (e) => {
  onSearch(e.target.value);
});

2. 節(jié)流(Throttle)

原理:固定時間內(nèi)只執(zhí)行一次,不管觸發(fā)多頻繁。

時間戳版(立即執(zhí)行,更常用)

function throttle(fn, interval = 300) {
  let lastTime = 0;

  return function (...args) {
    const now = Date.now();
    if (now - lastTime >= interval) {
      fn.apply(this, args);
      lastTime = now;
    }
  };
}

使用示例(滾動)

const handleScroll = throttle(() => {
  console.log("滾動位置", window.scrollY);
}, 300);

window.addEventListener("scroll", handleScroll);

3. 帶立即執(zhí)行的防抖(可選)

有些場景希望第一次立即執(zhí)行,后面再防抖:

function debounceImmediate(fn, delay = 300) {
  let timer = null;

  return function (...args) {
    const isFirst = !timer;

    clearTimeout(timer);
    timer = setTimeout(() => {
      timer = null;
    }, delay);

    if (isFirst) {
      fn.apply(this, args);
    }
  };
}

4. 快速記憶

  • 防抖:等你停手再執(zhí)行 → 搜索框、輸入驗證、按鈕防重復(fù)點擊
  • 節(jié)流:冷卻時間 → 滾動、拖拽、resize、高頻點擊

需要我給你寫一個帶取消功能、支持立即執(zhí)行、兼容 React 的高級版防抖節(jié)流嗎?

以上就是在JavaScript中實現(xiàn)防抖和節(jié)流的方法詳解的詳細內(nèi)容,更多關(guān)于JavaScript實現(xiàn)防抖和節(jié)流的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論

泸溪县| 桐庐县| 石嘴山市| 怀来县| 阿城市| 常熟市| 成武县| 将乐县| 海盐县| 宜昌市| 舞阳县| 安远县| 霍林郭勒市| 永顺县| 宜阳县| 辽宁省| 原平市| 德钦县| 云龙县| 安塞县| 大理市| 华安县| 泰来县| 瓮安县| 晴隆县| 甘肃省| 汕头市| 遵化市| 秭归县| 吉木萨尔县| 香格里拉县| 佳木斯市| 洛浦县| 古田县| 玉门市| 普格县| 寿宁县| 资阳市| 绍兴县| 宁陕县| 扬中市|