debounce and throtlle

debounce

javascript 复制代码
      // 核心:单位时间内触发>1 则只执行最后一次。
      //excutioner 可以认为是执行器。执行器存在则清空,再赋值新的执行器。
      function debounce(fn, delay = 500) {
        let excutioner = null;
        return function () {
          let context = this;
          let args = arguments;

          if (excutioner) {
            clearTimeout(excutioner);
          }
          excutioner = setTimeout(() => {
            fn.apply(context, args);
          }, delay);

          console.log("excutioner", excutioner);
        };
      }

      const clickFun = params => {
        console.log("this is click Fun", params);
      };

      const butt = document.getElementById("clickBut");
      //传参的2种方式
      butt.addEventListener(
        "click",
        debounce(() => clickFun(100), 1000)
      );
      // butt.addEventListener("click", debounce(clickFun, 1000).bind(this, 100));

throtlle

javascript 复制代码
      // 单位时间内触发>1次 只执行第一次
      function throttle(fn, delay = 1000) {
        let excutioner = null;
        return function () {
          const context = this;
          const args = arguments;
          if (!excutioner) {
            excutioner = setTimeout(() => {
              fn.apply(context, args);
              excutioner = null;
            }, deplay);
          }
        };
      }
      const butt2 = document.getElementById("clickBut2");
      //传参
      butt.addEventListener(
        "click",
        throttle(() => clickFun(100), 1000)
      );

注: //在 JavaScript 中,arguments 是一个类数组对象,它表示传递给一个函数的参数集合。通过使用 arguments

对象,你可以在函数内部访问到传递给该函数的所有参数,即使你在函数声明中没有明确指定这些参数。

相关推荐
菥菥爱嘻嘻几秒前
JS手写代码篇---手写 new 操作符
开发语言·javascript·原型模式
隐含21 分钟前
webpack打包,把png,jpg等文件按照在src目录结构下的存储方式打包出来。解决同一命名的图片资源在打包之后,重复命名的图片就剩下一个图片了。
前端·webpack·node.js
_龙小鱼_26 分钟前
Kotlin变量与数据类型详解
开发语言·微信·kotlin
保利九里30 分钟前
java中的包机制
java·开发语言
lightYouUp32 分钟前
windows系统中下载好node无法使用npm
前端·npm·node.js
Dontla33 分钟前
npm cross-env工具包介绍(跨平台环境变量设置工具)
前端·npm·node.js
小妖66636 分钟前
vue2 切换主题色以及单页面好使方法
前端·vue.js·elementui
SRC_BLUE_1740 分钟前
VulnHub | Breach - 1
开发语言·php·dreamweaver
胡桃夹夹子41 分钟前
【前端优化】vue2 webpack4项目升级webpack5,大大提升运行速度
前端·javascript·vue.js·webpack·性能优化
橘子海全栈攻城狮1 小时前
【源码+文档+调试讲解】党员之家服务系统小程序1
java·开发语言·spring boot·后端·小程序·旅游