【闭包应用】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);
相关推荐
Cobyte20 分钟前
AI全栈实战:使用 Python+LangChain+Vue3 构建一个 LLM 聊天应用
前端·后端·aigc
NEXT0632 分钟前
前端算法:从 O(n²) 到 O(n),列表转树的极致优化
前端·数据结构·算法
剪刀石头布啊38 分钟前
生成随机数,Math.random的使用
前端
剪刀石头布啊39 分钟前
css外边距重叠问题
前端
剪刀石头布啊40 分钟前
chrome单页签内存分配上限问题,怎么解决
前端
剪刀石头布啊42 分钟前
css实现一个宽高固定百分比的布局的一个方式
前端
剪刀石头布啊1 小时前
js数组之快速组、慢数组、密集数组、稀松数组
前端
mango_mangojuice1 小时前
Linux学习笔记(make/Makefile)1.23
java·linux·前端·笔记·学习
Days20502 小时前
简单处理接口返回400条数据本地数据分页加载
前端
Novlan12 小时前
@tdesign/uniapp 图标瘦身
前端