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);
相关推荐
登山人在路上几秒前
Vue3 Watch 完全指南:深度监听与性能优化
前端·javascript·vue.js
沐知全栈开发1 分钟前
Scala 数组
开发语言
jiayong232 分钟前
Word 使用指南:标题间距调整与核心功能详解
开发语言·c#·word
CodeSheep3 分钟前
公司开始严查午休…
前端·后端·程序员
Rhys..3 分钟前
js-运算符 ||
前端·javascript·vue.js
游戏23人生3 分钟前
c++ 语言教程——17面向对象设计模式(六)
开发语言·c++·设计模式
superman超哥4 分钟前
仓颉内存管理内功:栈与堆的分配策略深度解析
c语言·开发语言·c++·python·仓颉
Evand J4 分钟前
【MATLAB例程】GNSS高精度定位滤波的例程分享,使用维纳滤波+多频段加权融合,抗多径、延迟等带来的误差
开发语言·matlab·gnss·北斗·滤波·维纳滤波·bds
哟哟耶耶4 分钟前
component-Echarts圆环数据展示-延长线,label,鼠标移动提示,圆环数据中心总数,信息面板
前端·javascript·echarts
全栈软件开发5 分钟前
Fidelity充电桩投资理财系统源码-前端uniapp纯源码+后端PHP
前端·uni-app·php