当前位置: 首页 > news >正文

节流throttle防抖debounce的函数封装

节流throttle防抖debounce函数封装

  • 一、节流:立刻执行,如果在n秒内再次触发,则不执行。
    • 简单函数封装
    • 使用场景
  • 二、防抖: n秒后执行该事件;如果n秒内被触发,则重新计时
    • 简单函数封装:
    • 使用场景

一、节流:立刻执行,如果在n秒内再次触发,则不执行。

可以理解为技能冷却,冷却期间不能使用技能。核心思想:限制频率

简单函数封装

export const throttle = (fn: any, delay: 800) => {let timer: any = null;return function () {const context = this;const args = arguments;if (!timer) {fn.apply(context, args);}timer = setTimeout(() => {timer = null;}, delay);};
};

使用场景

场景说明为什么使用节流
滚动事件scroll监听页面滚动做动画或加载滚动事件太过频繁,节流可以减轻性能压力
窗口resize监听页面尺寸变化调整布局控制调整频率,防止卡顿
按钮点击防止按钮被连续点击触发多次限制点击间隔
鼠标移动事件mousemove图拽绘图操作控制渲染频率,防止卡顿

二、防抖: n秒后执行该事件;如果n秒内被触发,则重新计时

可以理解为英雄回城,打断要重新开始,等英雄不动了再执行。核心思想:延迟执行

简单函数封装:

export const debounce = (fn: any, delay = 800) => {let timer: any = null;return function () {const context = this;const args = arguments;if (timer) {clearTimeout(timer);}timer = setTimeout(() => {fn.apply(context, args);}, delay);};
};

使用场景

场景说明为什么使用防抖
输入框搜索用户输入时,调用接口搜索避免每次输入都发送请求,只在停止输入后发一次
浏览器resize用户调整窗口大小时重新布局只在调整完成后执行一次布局计算
表单验证用户输入表单内容时实时验证避免每个字母都出发验证函数
鼠标移入提示鼠标停留一段时间后显示提示框防止用户快速滑过多个元素频繁触发
http://www.dtcms.com/a/613811.html

相关文章:

  • CSS 网格元素:构建现代网页布局的基石
  • 屹晶微 EG2134 三相独立半桥驱动芯片技术解析
  • 用py做网站写wordpress
  • 12. C语言高级编程-内存管理(2)
  • 【复习】计网每日一题1115---IPv6地址的简洁表示、::
  • RHCSA做项目:基于LAMP环境搭建Web应用(Discuz!论坛)的基础环境与部署流程
  • 南昌网站搭建公司 赣ICP温州排名推广
  • 前端使用TensorFlow.js reactjs调用本地模型 实现图像、文本、音频/声音、视频相关识别
  • 香蕉派 BPI-2K3000 工业计算机开发板采用龙芯2K3000芯片设计
  • C语言-数据结构-单链表程序-增删改查
  • vip广告网站建设摄影网站开题报告
  • 进程概念(上)
  • 网络水果有哪些网站可以做中国国家人事人才培训网
  • 开启智能未来之门:华为HCIA-AI认证培训与考试全方位深度解析
  • 记事本源代码分析ALT+F4调试记录详细分析
  • 【Java基础07】链表
  • DDL数据
  • 北京驾校网站建设方一凡和磊儿做家教的网站
  • 电的帝国与时空的编程:从基础属性到人工场革命的宏伟蓝图
  • C语言入门(十七):指针(3)
  • 共绩算力全面研究报告:破解算力 “不可能三角“ 的创新实践
  • 网络:5.应用层协议HTTP
  • python 要如何快速拥有可用python的编程能力
  • 网站跳出率房地产的未来趋势分析
  • 家庭网络建站广告设计公司服务不到位
  • SAP FICO工单成本分析报表
  • 破解版网站建设营销运营推广服务
  • 告别“在我电脑上能跑”:Docker入门与核心概念解析
  • 2. YOLOv5 搭建一个完整的目标检测系统核心步骤
  • discuz培训网站模板下载wordpress直接显示文章