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);
相关推荐
定栓2 分钟前
Webpack迁到Vite第七节(四):全家桶移除 — 保留项、脚本与数据收尾
前端·webpack·node.js
我就是不信5 分钟前
Swift 方法派发机制详解
开发语言·ios·swift
CCCCCCCCharlie9 分钟前
深入解析I/O底层:文件描述符与缓冲区真相
linux·开发语言·c++·算法
数据掘金11 分钟前
小程序埋点方案的埋点文档怎么自动生成?
前端
deli00712 分钟前
cron 表达式为什么总跑错?10 个场景实测,下次执行时间一眼看懂
前端
代码猎人15 分钟前
前端怎么优化页面性能
前端
Zenova EdgeOS16 分钟前
Rust TUI 实战:用 ratatui 构建工业边缘终端界面
开发语言·后端·rust·工业网关
代码猎人18 分钟前
前端怎么配合后端完成数据对接
前端
lexiangqicheng24 分钟前
Docker的沙箱机制是怎样的?
前端·javascript
学逆向的32 分钟前
C 选择结构的执行效率分析
c语言·开发语言·算法·网络安全