前端js防抖

一、原生js防抖

html 复制代码
<!DOCTYPE html>
<html>
<head>
  <title>防抖按钮示例</title>
</head>
<body>
  <button id="immediateButton">立即触发</button>
  <button id="waitButton">等候触发</button>

  <script>
    function debounceImmediate(func, delay) {
      let timeoutId;
      let immediate = true;

      return function (...args) {
        clearTimeout(timeoutId);

        if (immediate) {
          func.apply(this, args);
          immediate = false;
        }

        timeoutId = setTimeout(() => {
          immediate = true;
        }, delay);
      };
    }

    function debounceWait(func, delay) {
      let timeoutId;

      return function (...args) {
        clearTimeout(timeoutId);

        timeoutId = setTimeout(() => {
          func.apply(this, args);
        }, delay);
      };
    }

    function handleImmediateClick() {
      console.log('立即触发按钮点击事件处理函数');
      // 在这里执行立即触发逻辑
    }

    function handleWaitClick() {
      console.log('等候触发按钮点击事件处理函数');
      // 在这里执行等候触发逻辑
    }

    const debouncedImmediateClick = debounceImmediate(handleImmediateClick, 1000); // 创建立即触发的防抖函数
    const debouncedWaitClick = debounceWait(handleWaitClick, 1000); // 创建等候触发的防抖函数

    const immediateButton = document.getElementById('immediateButton');
    immediateButton.addEventListener('click', debouncedImmediateClick);

    const waitButton = document.getElementById('waitButton');
    waitButton.addEventListener('click', debouncedWaitClick);
  </script>

</body>
</html>
相关推荐
IT古董2 分钟前
微前端的新纪元:Vite + Module Federation 最强指南(2025 全面技术解析)
前端
小小弯_Shelby6 分钟前
vue项目源码泄露漏洞修复
前端·javascript·vue.js
兔子零10247 分钟前
CSS 视口单位进化论:从 100vh 的「骗局」到 dvh 的救赎
前端·css
q***876017 分钟前
项目升级Sass版本或升级Element Plus版本遇到的问题
前端·rust·sass
k***121718 分钟前
【Nginx 】Nginx 部署前端 vue 项目
前端·vue.js·nginx
小尧嵌入式21 分钟前
C++基础语法总结
开发语言·c++·stm32·单片机·嵌入式硬件·算法
@游子24 分钟前
Python学习笔记-Day2
开发语言·python
看晴天了24 分钟前
手势操控 Three.js!效果炸裂!
前端
qq_3363139326 分钟前
java基础-集合进阶
java·开发语言·windows
222you28 分钟前
MybatisPlus常用注解
java·开发语言·spring