【闭包应用】JS:防抖、节流

1、防抖:当进行连续操作时,只执行最后一次的操作。

复制代码
 //防抖的概念是 当进行连续操作时,只执行最后一次的操作。
    function debounce(fn, delayTime) {
      let timeout = null;

      return function () {
        if (timeout) {
          clearTimeout(timeout);
        }

        timeout = setTimeout(() => {
          fn.call(this);
          timeout = null;
        }, delayTime);
      };
    }

    function func() {}

    debounce(func,200)

2、节流:
节流的概念是在一定时间内,用户没有再次进行此操作,在固定时间范围内只让操作一次。简单的说就是此次操作时间和上次操作时间要大于时间差,时间差的值由用户指定。
实现原理:使用闭包创建私有变量,这个私有变量用来记录上次操作的时间,此次操作时间与这个私有变量的差值如果超过已设置的时间范围差值,则进行次函数调用,否则不进行调用此函数。

复制代码
   function func(){

    }

 
    /**
    fn:调用的函数;
    timeout:时间差
    */
    function throlle(fn,timeout){
      let time = 0;
      return function(){
        let time1 = new Date().getTime();
        if(time1 - time > timeout){
          fn.call(this)
        } else {
          time = time1
        }
      }
    }
    throlle(func,200);
相关推荐
欧阳天风5 分钟前
electron播放本地音乐的问题
前端·javascript·electron
艾伦野鸽ggg8 分钟前
CSS布局与动效知识梳理
前端·css
ljt272496066112 分钟前
Vue笔记(二)--组件的属性和方法
前端·vue.js·笔记
Boop_wu13 分钟前
[前端] CSS 常用样式(聊天界面 / 网页布局专用)
前端·css·css3
声声codeGrandMaster14 分钟前
React框架的基础代码使用
前端·react.js·前端框架
叫我少年17 分钟前
Vue 3 集成 Vue Router:从基础配置到项目实践
前端·路由
Highcharts.js18 分钟前
Highcharts React 5.0 正式版:支持 ES 模块化、组件更精简、开发体验全面升级
前端·javascript·react.js·elasticsearch·前端框架·highcharts
大江东去浪淘尽千古风流人物23 分钟前
【X-Restormer++】全天候图像恢复赛冠军方案:三项创新解析及对VIO/SLAM前端的工程价值
前端
LaughingZhu25 分钟前
Claude Code 时代的写作:为什么 HTML 正在取代 Markdown
前端·人工智能·html
Shadow(⊙o⊙)34 分钟前
qt中自定义槽函数 内部继承逻辑、GUI+CLI协同1.0
开发语言·前端·c++·qt