JS:防抖与节流函数的实现与应用

一、防抖

防抖:一连串操作只执行一次。通过设置一个延迟时间,如果这段时间没有再次执行操作则运行目标函数,否则重新计时。

下面是一个防抖函数代码:

TypeScript 复制代码
let a=1;
const add = () => {
  a++;
};
const debounce = (fun: Function, delay: number) => {
  let timer: any = null;
  return function () {
    clearTimeout(timer);
    timer = setTimeout(() => {
      fun();
    }, delay);
  };
};
const debounceAdd = debounce(add, 1000);

二、节流

节流:立即执行目标函数,接着设定时间间隔,计时结束后才可再次执行目标函数。

TypeScript 复制代码
let a = 0;
const add = () => {
  a++;
};
const throttle = (fun: Function, delay: number) => {
  let timer: any = null;
  return function () {
    if (!timer) {
      fun();
      timer = setTimeout(() => {
        fun();
        timer = null;
      }, delay);
    }
  };
};
const throttleAdd = throttle(add, 1000);
相关推荐
deng-c-f2 分钟前
C/C++内置库函数(5):值/引用传递、移动构造、以及常用的构造技巧
开发语言·c++
码农胖大海5 分钟前
微前端架构(一):基础入门
前端
豆约翰6 分钟前
Z字形扫描ccf
java·开发语言·算法
同聘云8 分钟前
阿里云国际站服务器gpu服务器与cpu服务器的区别,gpu服务器如何使用?
服务器·前端·阿里云·云计算
小尧嵌入式11 分钟前
C语言中的面向对象思想
c语言·开发语言·数据结构·c++·单片机·qt
lionliu051912 分钟前
执行上下文 (Execution Context)
开发语言·前端·javascript
nbsaas-boot12 分钟前
JWT 与 Session 的实用场景分析:从架构边界到工程落地
java·开发语言·架构
Tim_1012 分钟前
【C++入门】03、C++整型
java·开发语言·jvm
几何心凉13 分钟前
openFuyao多样化算力使能
前端
方安乐14 分钟前
vue3 el-select懒加载以及自定义指令
javascript·vue.js·elementui