前端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>
相关推荐
风象南6 分钟前
前端渲染三国杀:SSR、SPA、SSG
前端
##学无止境##8 分钟前
Maven 从入门到精通:Java 项目构建与依赖管理全解析(上)
java·开发语言·maven
魔都吴所谓19 分钟前
【go】语言的匿名变量如何定义与使用
开发语言·后端·golang
90后的晨仔23 分钟前
表单输入绑定详解:Vue 中的 v-model 实践指南
前端·vue.js
骇客野人38 分钟前
使用python写一套完整的智能体小程序
开发语言·python
绿炮火39 分钟前
【MATLAB】(二)基础知识
开发语言·算法·matlab
陈佬昔没带相机1 小时前
围观前后端对接的 TypeScript 最佳实践,我们缺什么?
前端·后端·api
你我约定有三1 小时前
分布式微服务--万字详解 微服务的各种负载均衡全场景以注意点
java·开发语言·windows·分布式·微服务·架构·负载均衡
奈斯。zs1 小时前
java面向对象高级02——单例类(设计模式)
java·开发语言·设计模式
90后的晨仔1 小时前
Vue 事件处理深入指南:从基础到进阶
前端·vue.js