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);
相关推荐
四问四不知几秒前
Rust语言进阶(结构体)
开发语言·后端·rust
拿破轮3 分钟前
使用通义灵码解决复杂正则表达式替换字符串的问题.
java·服务器·前端
whltaoin4 分钟前
【 Web认证 】Cookie、Session 与 JWT Token:Web 认证机制的原理、实现与对比
前端·web·jwt·cookie·session·认证机制
q***9946 分钟前
index.php 和 php
开发语言·php
oioihoii10 分钟前
C++网络编程:从Socket混乱到优雅Reactor的蜕变之路
开发语言·网络·c++
Aerelin20 分钟前
爬虫playwright入门讲解
前端·javascript·html·playwright
笙年36 分钟前
JavaScript Promise,包括构造函数、对象方法和类方法
开发语言·javascript·ecmascript
桜吹雪37 分钟前
LangChain.js/DeepAgents可观测性
javascript·人工智能
神仙别闹44 分钟前
基于C++实现(控制台)应用递推法完成经典型算法的应用
开发语言·c++·算法
5***o5001 小时前
前端在移动端中的NativeBase
前端