【闭包应用】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);
相关推荐
毕设源码-朱学姐14 分钟前
【开题答辩全过程】以 基于HTML5的购物网站的设计与实现为例,包含答辩的问题和答案
前端·html·html5
梦65024 分钟前
CSS 元素垂直水平居中的 8 种方法
前端·css
We་ct32 分钟前
LeetCode 68. 文本左右对齐:贪心算法的两种实现与深度解析
前端·算法·leetcode·typescript
ShoreKiten41 分钟前
ctfshow-web316
运维·服务器·前端
前端 贾公子1 小时前
release-it 使用指南
前端·javascript
全栈技术负责人1 小时前
前端团队 AI Core Workflow:从心法到落地
前端·人工智能·状态模式
前端 贾公子2 小时前
深入浅出 CSS 属性:pointer-events: none
前端·css
曾几何时`2 小时前
二分查找(十)1146. 快照数组 pair整理
java·服务器·前端
夏河始溢2 小时前
一八二、webpack、grunt、gulp、rollup、parcel、vite 对比介绍
前端·webpack·gulp
别或许3 小时前
python中的异步调用(直接使用教程)
java·前端·python