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);
相关推荐
4***14902 分钟前
Vue代码规范详解
javascript·vue.js·代码规范
黑幕困兽4 分钟前
ehcarts 实现 饼图扇区间隙+透明外描边
前端·echarts
San305 分钟前
深入理解 JavaScript 词法作用域链:从代码到底层实现机制
前端·javascript·ecmascript 6
进击的野人5 分钟前
深入理解 JavaScript Promise:原理、用法与实践
javascript·面试·ecmascript 6
颜*鸣&空21 分钟前
QT程序实现串口通信案例
开发语言·qt
七淮31 分钟前
Next.js SEO 优化完整方案
前端·next.js
无限进步_36 分钟前
C语言动态内存的二维抽象:用malloc实现灵活的多维数组
c语言·开发语言·数据结构·git·算法·github·visual studio
e***193538 分钟前
爬虫学习 01 Web Scraper的使用
前端·爬虫·学习
我有一棵树41 分钟前
file 协议与 http 协议的区别:为什么本地 HTML 无法加载相对路径 JS,以及正确的解决方式
javascript·http·html
aircrushin42 分钟前
TRAE SOLO 中国版,正式发布!AI 编程的 "Solo" 时代来了?
前端·人工智能