news 2026/6/10 0:26:07

防抖和节流

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
防抖和节流

在前端开发中,防抖(Debounce)和节流(Throttle)是两种用于优化高频率触发事件(如滚动、窗口缩放、键盘输入)的技术。它们的核心目的都是为了减少函数执行次数,从而提高页面性能,避免浏览器卡顿。


1. 防抖 (Debounce)

概念:在事件被触发 n 秒后再执行回调。如果在这 n 秒内事件又被触发,则重新计时

  • 形象比喻:就像电脑休眠。如果你一直在动鼠标,电脑就不会休眠;只有当你停止操作一段时间后,电脑才会进入休眠状态。
  • 应用场景
  • 搜索框输入查询:只有当用户停止打字一段时间后,才发送 API 请求。
  • 窗口大小调整(resize):窗口调整停止后,再重新计算布局。

2. 节流 (Throttle)

概念:规定在一个单位时间内,只能触发一次函数。如果在这个单位时间内触发了多次事件,只有**第一次(或最后一次)**生效。

  • 形象比喻:就像技能冷却(CD)。当你放了一个大招后,无论你狂按多少次按键,在冷却时间结束前,技能都不会再次释放。
  • 应用场景
  • 滚动监听(scroll):比如加载更多或计算瀑布流位置,不需要每滚动 1px 就计算一次,而是每隔 200ms 计算一次。
  • 抢购按钮点击:防止用户快速连续点击导致发送过多请求。

3. 直观对比总结

特性防抖 (Debounce)节流 (Throttle)
核心思想只要你一直触发,我就一直不执行。只看最后一次无论你触发多快,我都按固定频率执行。细水长流
触发点事件停止触发一段时间后执行。事件触发期间,每隔一段时间执行一次。
主要目的减少由于连续触发带来的不必要执行。均匀分布执行过滤,控制流量。

4. 简易代码实现 (JavaScript)

防抖函数
functiondebounce(fn,delay){lettimer=null;returnfunction(...args){if(timer)clearTimeout(timer);// 如果有计时器,直接清除并重新开始timer=setTimeout(()=>{fn.apply(this,args);},delay);};}
节流函数 (时间戳版)
functionthrottle(fn,delay){letlastTime=0;returnfunction(...args){letnow=Date.now();if(now-lastTime>delay){// 只有当前时间与上次执行时间间隔大于 delay 才执行fn.apply(this,args);lastTime=now;}};}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 15:52:20

养老院管理|基于springboot + vue养老院管理系统(源码+数据库+文档)

养老院管理 目录 基于springboot vue养老院管理系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取: 基于springboot vue养老院管理系统 一、前言 博主介绍&#xff1a…

作者头像 李华
网站建设 2026/6/10 15:40:38

计算机组成原理要点

计算机组成原理复习要点 课程摘要 本次复习主要围绕计算机组成原理的各个章节展开,包括存储系统、指令系统、中央处理器、输入输出系统等。其中,存储系统部分重点讲解了主存储器、外部存储器以及存储系统的性能指标;指令系统部分强调了指令格…

作者头像 李华
网站建设 2026/6/10 4:06:03

操作系统与数据结构核心知识点解析

操作系统与数据结构核心知识点解析 课程摘要 本文详细解析了操作系统和数据结构的核心知识点,包括操作系统的基本概念、内核与用户模式、中断异常、系统调用、引导过程,以及操作系统的目标和功能。同时,也深入讲解了进程与线程的引入、状态与…

作者头像 李华
网站建设 2026/6/10 0:32:46

Redis篇6——Redis深度剖析:从单机到集群,Redis高可用进化史

在前面的文章中,我们聊了 Redis 的持久化、锁机制以及热 Key 问题。今天,我们跳出具体的命令细节,从宏观架构的角度来看看 Redis 是如何一步步“做大做强”的。在生产环境中,我们几乎不会只部署一台 Redis。为什么?因为…

作者头像 李华
网站建设 2026/6/10 15:36:00

AI 时代,程序员的核心竞争力是什么?

从确定性到概率迷雾 Martin Fowler——《重构》的作者、敏捷宣言的起草人之一,对当前 AI 浪潮发出了警告:这不是工具升级,这是物种突变。我们正在从确定性的工业时代,跌进非确定性的概率迷雾。以前程序员是计算机世界的上帝&#…

作者头像 李华
网站建设 2026/6/10 14:29:02

41、打造出色的 UNIX 系统管理员简历

打造出色的 UNIX 系统管理员简历 在竞争激烈的就业市场中,一份出色的简历是开启理想工作之门的关键。对于 UNIX 系统管理员而言,如何准备一份能吸引潜在雇主目光的简历,是迈向成功职业生涯的重要一步。 简历的基本维护 在当前工作岗位上,要持续更新简历。当参与新项目、…

作者头像 李华