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);
相关推荐
会员果汁3 分钟前
算法-拓扑排序-C
c语言·开发语言·算法
WebRuntime4 分钟前
所有64位WinForm应用都是Chromium浏览器(2)
javascript·c#·.net·web
贺今宵6 分钟前
2025.electron-vue3-sqlite3使用
前端·javascript·electron
wangchen_08 分钟前
深入理解 C/C++ 强制类型转换:从“暴力”到“优雅”
java·开发语言·jvm
lly20240619 分钟前
CSS 颜色
开发语言
王同学_11624 分钟前
爬虫辅助技术(css选择器、xpath、正则基础语法)
前端·css·爬虫
潲爺24 分钟前
《Java 8-21 高频特性实战(上):5 个场景解决 50% 开发问题(附可运行代码)》
java·开发语言·笔记·学习
Irene199127 分钟前
创建新DOM节点方式总结
javascript·dom
资生算法程序员_畅想家_剑魔27 分钟前
算法-回溯-14
java·开发语言·算法
2501_9462338938 分钟前
Flutter与OpenHarmony大师详情页面实现
android·javascript·flutter