前端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、木易1 分钟前
大白话React第二章深入理解阶段
前端·javascript·react.js
muxue1781 分钟前
go:运行第一个go语言程序
开发语言·后端·golang
米饭好好吃.2 分钟前
【Go】Go wire 依赖注入
开发语言·后端·golang
闲猫2 分钟前
go 接口interface func (m Market) getName() string {
开发语言·后端·golang
可爱de艺艺2 分钟前
Go入门之struct
开发语言·后端·golang
信徒_6 分钟前
Go 语言中的协程
开发语言·后端·golang
晚安7206 分钟前
Ajax相关
前端·javascript·ajax
图书馆钉子户8 分钟前
怎么使用ajax实现局部刷新
前端·ajax·okhttp
begei10 分钟前
飞牛os使用ddns-go配合华为云实现内网穿透
开发语言·golang·华为云
bin915325 分钟前
DeepSeek 助力 Vue 开发:打造丝滑的单选按钮(Radio Button)
前端·javascript·vue.js·ecmascript·deepseek