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);
相关推荐
Rysxt_几秒前
鸿蒙开发语言ArkTS全面介绍
开发语言·华为·harmonyos
三天不学习2 分钟前
【入门教学】Python包管理与pip常用包
开发语言·python·pip
共享家95278 分钟前
测试常用函数(下)
java·服务器·前端
沐知全栈开发13 分钟前
桥接模式(Bridge Pattern)
开发语言
问道飞鱼16 分钟前
【Rust开发知识】Actix-web 开发环境搭建完整教程
开发语言·前端·rust·actix-web
a1760293175717 分钟前
任天堂超级马里奥合集系列游戏130合1 解压即玩 天马G前端整合包附使用教程
前端·游戏·玩游戏·游戏机·单机游戏
雪忆·HL24 分钟前
CSS3知道这些就足够了
前端·css·css3
心机boy22924 分钟前
CSS3网格布局、过渡及2D效果
前端·javascript·css3
空白24 分钟前
自学HTML5+CSS3丨第三天丨详解SEO
前端·css3·html5
oak隔壁找我25 分钟前
使用 json-server 快速创建一个完整的 REST API
前端·javascript