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 小时前
3天,1人,从0到付费产品:AI时代个人开发者的生存指南
前端·人工智能·后端
一千柯橘2 小时前
从摄影新手到三维光影师:Three.js 核心要素的故事
前端·three.js
降临-max2 小时前
JavaSE---网络编程
java·开发语言·网络·笔记·学习
南囝coding2 小时前
2025年CSS新特性大盘点
前端·css
c***V3232 小时前
前端框架对比:10个主流框架优缺点分析
前端·前端框架
湖边看客2 小时前
antd x6 + vue3
开发语言·javascript·vue.js
栀秋6663 小时前
当我把 proto 打印出来那一刻,我懂了JS的原型链
前端·javascript
小离a_a3 小时前
flex垂直布局,容器间距相等
开发语言·javascript·ecmascript
Cassie燁3 小时前
element-plus源码解读1——useNamespace
前端·vue.js
一直在学习的小白~3 小时前
npm发布脚手架流程
前端·npm·node.js