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

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

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

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

1. 防抖(Debounce)

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

最簡(jiǎn)實(shí)現(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("請(qǐng)求搜索:", value);
}, 500);

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

2. 節(jié)流(Throttle)

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

時(shí)間戳版(立即執(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;
    }
  };
}

使用示例(滾動(dòng))

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

window.addEventListener("scroll", handleScroll);

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

有些場(chǎng)景希望第一次立即執(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í)行 → 搜索框、輸入驗(yàn)證、按鈕防重復(fù)點(diǎn)擊
  • 節(jié)流:冷卻時(shí)間 → 滾動(dòng)、拖拽、resize、高頻點(diǎn)擊

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

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

相關(guān)文章

最新評(píng)論

汉沽区| 革吉县| 宜兰县| 新巴尔虎右旗| 大新县| 定边县| 营口市| 合肥市| 揭东县| 渭南市| 延安市| 新兴县| 东源县| 绵竹市| 荣成市| 宜城市| 明光市| 崇仁县| 白城市| 南安市| 青河县| 唐海县| 通辽市| 吉水县| 张家口市| 新疆| 都兰县| 神池县| 金川县| 武夷山市| 蓝山县| 木兰县| 曲麻莱县| 丰县| 连平县| 石柱| 原阳县| 乌鲁木齐市| 霍林郭勒市| 彭州市| 常州市|