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);
相关推荐
Amumu1213817 小时前
React Router 6介绍
前端·react.js·前端框架
野生技术架构师17 小时前
2026最新最全Java 面试题大全(整理版)2000+ 面试题附答案详解
java·开发语言
南村群童欺我老无力.17 小时前
Flutter 框架跨平台鸿蒙开发 - 打造表情包制作器应用
开发语言·javascript·flutter·华为·harmonyos
山峰哥17 小时前
SQL调优实战:让查询效率飙升10倍的降本密码
服务器·前端·数据库·sql·编辑器·深度优先
摘星编程17 小时前
React Native for OpenHarmony 实战:MediaPlayer 播放器详解
javascript·react native·react.js
学习3人组17 小时前
AI视觉Python方向专业技术名词
开发语言·人工智能·python
黎雁·泠崖17 小时前
Java分支循环与数组核心知识总结篇
java·c语言·开发语言
TAEHENGV17 小时前
React Native for OpenHarmony 实战:反应测试实现
javascript·react native·react.js
派大鑫wink17 小时前
【Day36】EL 表达式与 JSTL 标签库:简化 JSP 开发
java·开发语言·jsp
云泽80817 小时前
深入浅出 C++ 继承:从基础概念到模板、转换与作用域的实战指南
开发语言·c++