前端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>
相关推荐
南棱笑笑生几秒前
20250931在RK3399的Buildroot【linux-6.1】下关闭camera_engine_rkisp
开发语言·后端·scala·rockchip
z_y_j2299704383 分钟前
服务器中使用Docker部署前端项目
服务器·前端·docker·容器
极客小俊9 分钟前
【浅谈javascript禁术】 eval函数暗藏玄机?
javascript
christine-rr15 分钟前
【25软考网工】第五章(11)【补充】网络互联设备
开发语言·网络·计算机网络·php·网络工程师·软考
迪丽热爱16 分钟前
解决【npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本。】问题
前端·npm·node.js
数字冰雹25 分钟前
图观 流渲染场景服务器
服务器·前端·数据库·数据可视化
李明卫杭州31 分钟前
详细讲解js中的ResizeObserver
前端·javascript
千叶寻-1 小时前
package.json详解
前端·vue.js·react.js·webpack·前端框架·node.js·json
小*-^-*九1 小时前
Electron vue项目 打包 exe文件2
javascript·vue.js·electron
zhengjianyang&1231 小时前
美团滑块-[behavior] 加密分析
javascript·经验分享·爬虫·算法·node.js