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);
相关推荐
牛奶1 小时前
AI辅助开发最佳实践:2026年新方法
前端·aigc·ai编程
Hamm2 小时前
不想花一分钱玩 OpenClaw?来,一起折腾这个!
javascript·人工智能·agent
myloveasuka2 小时前
Java与C++多态访问成员变量/方法 对比
java·开发语言·c++
C澒2 小时前
微前端容器标准化:公共能力标准化
前端·架构
2301_821700532 小时前
C++编译期多态实现
开发语言·c++·算法
Setsuna_F_Seiei2 小时前
AI 对话应用之 JS 的流式接口数据处理
前端·javascript·ai编程
奥地利落榜美术生灬2 小时前
c++ 锁相关(mutex 等)
开发语言·c++
英俊潇洒美少年2 小时前
react如何实现 vue的$nextTick的效果
javascript·vue.js·react.js
xixihaha13242 小时前
C++与FPGA协同设计
开发语言·c++·算法
重庆小透明2 小时前
【java基础篇】详解BigDecimal
java·开发语言