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

一文大白话讲清楚防抖和节流,设计封装防抖和节流,以及防抖和节流的应用场景

文章目录

  • 一文大白话讲清楚防抖和节流,设计封装防抖和节流,以及防抖和节流的应用场景
  • 1. 防抖和节流的背景
  • 2. 节流
  • 3. 节流的应用场景
  • 4. 防抖
  • 5. 防抖应用场景

一文大白话讲清楚防抖和节流,设计封装防抖和节流,以及防抖和节流的应用场景

1. 防抖和节流的背景

  • 我们可能会遇到这么一种情况,你在页面上写了一个按钮,点一下这个按钮,就能刷新一下这个页面
  • 这时候有个哥们,他就想在想,如果我一直不停的点,会怎么样,于是他就以三十年单身的手速嘎嘎嘎嘎一直点。
  • 这时候你的页面就要不断地刷新,向服务器拉取资源,造成了极大的资源浪费。
  • 于是你就想,我有没有可能限制他一下,怎么限制呢,点还是让你点,不让你点你跟我急。
  • 但是你点完以后我执不执行,或者怎么执行,那就是我的事了。于是,我想出了两个办法。
  • 第一种办法,我设置一个时间段,这个时间段不管你点了多少次,我只执行你对后点的那一次,这样既不影响你点,我还能少执行。这就是节流
  • 第二种办法,我设置这么个逻辑,你点一下,我就让你当前的点击延迟N秒后再执行,如果你在延迟等待的时间里又点了一次,那就重新开始计时N秒再执行,直到有一次N秒倒计时结束了,那就执行。这就是防抖。

2. 节流

  • n秒内只运行一次,若在n秒内重复触发,只有一次生效
  • 设计封装一个节流器,上代码
<div><button id="button">click me</button>
</div><script>function throttled(fn,delay=2000){let timer=null;return function (...args){if(!timer){timer=setTimeout(()=>{fn.apply(this,args)timer=null;},delay)}}}function print(){console.log('节流')}document.getElementById('button').addEventListener('click',throttled(print,2000))
</script>

3. 节流的应用场景

  • 滚动加载,加载更多,滚动到底部监听
  • 搜索框联想

4. 防抖

  • n秒后执行该事件,若在n秒内被触发,则重新计时n秒
  • 设计封装一个防抖器,上代码
<div><button id="button">click me</button>
</div><script>function throttled(fn,delay=2000){let timer=null;return function (...args){clearTimeout(timer)timer=setTimeout(()=>{fn.apply(this,args)},delay)}}function print(){console.log('防抖')}document.getElementById('button').addEventListener('click',throttled(print,2000))
</script>

5. 防抖应用场景

  • 窗口发小resize
  • 表单校验等

相关文章:

一文大白话讲清楚防抖和节流,设计封装防抖和节流,以及防抖和节流的应用场景

文章目录 一文大白话讲清楚防抖和节流&#xff0c;设计封装防抖和节流&#xff0c;以及防抖和节流的应用场景1. 防抖和节流的背景2. 节流3. 节流的应用场景4. 防抖5. 防抖应用场景 一文大白话讲清楚防抖和节流&#xff0c;设计封装防抖和节流&#xff0c;以及防抖和节流的应用场…...

Windows开启IIS后依然出现http error 503.the service is unavailable

问题背景 已启用IIS服务&#xff0c;配置步骤可以参考Windows10 IIS Web服务器安装配置 问题描述 在这一步浏览网站时&#xff0c;并没有出现默认首页&#xff0c;而是 http error 503 the service is unavailable 问题解决 参考 成功解决http error 503.the service is un…...

C++的封装(十四):《设计模式》这本书

很多C学习者学到对C语言有一定自信后&#xff0c;会去读一下《设计模式》这本书。希望能够提升自己的设计水平。 据我所知&#xff0c;围绕C语言出了很多书。因为正好赶上泡沫经济时代。大家一拥而上&#xff0c;自己半懂不懂就出书&#xff0c;抢着出书收割读者&#xff0c;出…...

牛客周赛73B:JAVA

链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 题目描述 \hspace{15pt}小红拿到了正整数 xxx &#xff0c;她希望你找到一个长度为 kkk 的区间&#xff0c;满足区间内恰好有 nnn 个数是 xxx 的倍数。你能帮帮她吗&#xff1f; 输入描述: …...

【Ubuntu 20.4安装截图软件 flameshot 】

步骤一&#xff1a; 安装命令&#xff1a; sudo apt-get install flameshot 步骤二&#xff1a; 设置快捷方式&#xff1a; Ubuntu20.4 设置菜单&#xff0c;点击 号 步骤三&#xff1a; 输入软件名称&#xff0c; 软件快捷命令&#xff08;flameshot gui&#xff09;&am…...

剑指Offer|LCR 014. 字符串的排列

LCR 014. 字符串的排列 给定两个字符串 s1 和 s2&#xff0c;写一个函数来判断 s2 是否包含 s1 的某个变位词。 换句话说&#xff0c;第一个字符串的排列之一是第二个字符串的 子串 。 示例 1&#xff1a; 输入: s1 "ab" s2 "eidbaooo" 输出: True 解…...

【Agent】Chatbot、Copilot与Agent如何帮助我们的提升效率?

人工智能&#xff08;AI&#xff09;技术的迅猛发展正在深刻改变我们的生活和工作方式。你是否曾想过&#xff0c;未来的工作场景会是什么样子&#xff1f;AI的崛起不仅仅是科技的进步&#xff0c;更是我们生活方式的革命。今天&#xff0c;我们将深入探讨三种主要的AI能力&…...

QT笔记- QTreeView + QFileSystemModel 当前位置的保存与恢复 #选中 #保存当前索引

保存当前位置 QString currentPath model->filePath(view->currentIndex()); // 获得当前位置路径 恢复位置 view->setCurrentIndex(model->index(currentPath)); // 设置此路径所在位置为当前位置...

OpenResty开发环境搭建

简介 OpenResty 是一个基于 Nginx的高性能 Web 平台&#xff0c;用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。官方地址&#xff1a;http://openresty.org/cn/ 具备下列特点&#xff1a; 具备Nginx的完整功能基于Lua语言进行扩展&#…...

linux提示结构需要清理

1. df -hT 查看出问题的文件夹所在的挂载磁盘及文件格式 2. umount 挂载磁盘&#xff0c;如果提示在忙, lsof 目录查看正在使用的进程&#xff0c;将其kill掉 3. 修复磁盘 根据文件格式修复磁盘fsck.ext4 /dev/sda1 或者 xfs_repair /dev/sda1 4. 重启系统 “结构需要清理…...

【扩展卡尔曼滤波理论推导与实践】【理论】【2/3 公式推导】

目录 非线性系统泰勒展开卡尔曼滤波卡尔曼增益模型误差协方差矩阵 公式总结 本节默认你能够完整推导标准卡尔曼滤波&#xff0c;将会简化一些推导的描述。如果你还不会完整推导标准卡尔曼滤波&#xff0c;请先从 【卡尔曼滤波理论推导与实践】系列开始看起。 非线性系统 扩展…...

springboot494基于java的综合小区管理系统(论文+源码)_kaic

摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统综合小区管理系统信息管理难度大&#xff0c;容错率低&am…...

深度学习blog-Transformer-注意力机制和编码器解码器

注意力机制&#xff1a;当我们看一个图像或者听一段音频时&#xff0c;会根据自己的需求&#xff0c;集中注意力在关键元素上&#xff0c;以获取相关信息。 同样地&#xff0c;注意力机制中的模型也会根据输入的不同部分&#xff0c;给它们不同的权重&#xff0c;并集中注意力在…...

敏感词 v0.24.0 新特性支持标签分类,内置实现多种策略

开源项目 敏感词核心 https://github.com/houbb/sensitive-word 敏感词控台 https://github.com/houbb/sensitive-word-admin 版本特性 大家好&#xff0c;我是老马。 敏感词标签分类一直是大家比较想要的一个功能特性&#xff0c;v0.24.0 了开始内置支持标签分类&#xff0c…...

随身 WiFi 连接 X-Wrt 共享网络与 IPv6 中继配置

本文首发于只抄博客&#xff0c;欢迎点击原文链接了解更多内容。 前言 之前分享的《随身 WiFi 通过 USB 连接路由器共享网络 扩展网络覆盖范围》介绍了随身 WiFi 通过 USB 连接到路由器共享网络&#xff0c;其中留下两个小问题没有解决&#xff1a; OpenWrt 无法识别中兴微的…...

Keil-编译按钮Translate,Build,Rebuild

在Keil编程环境中&#xff0c;有三个编译源文件相关的按钮Translate&#xff0c;Build&#xff0c;Rebuild&#xff1a; Translate 仅仅&#xff08;狭义&#xff09;编译一下当前编辑的源文件&#xff08;main.c 仅生成 main.o&#xff09;&#xff0c;并不生成最终可执行文件…...

No.1免费开源ERP:Odoo自定义字段添加到配置页中的技术分享

文 / 开源智造&#xff08;OSCG&#xff09; Odoo亚太金牌服务 在Odoo18之中&#xff0c;配置设定于管控各类系统配置层面发挥着关键之效用&#xff0c;使您能够对软件予以定制&#xff0c;以契合您特定的业务需求。尽管 Odoo 提供了一组强劲的默认配置选项&#xff0c;然而有…...

Linux 更改Jenkins使用其他账户启动

Linux 更改Jenkins使用其他账户启动 步骤一&#xff1a;修改 Jenkins 配置文件1. 编辑 Jenkins 的 systemd 服务文件&#xff1a;2. 在编辑器中添加以下内容&#xff1a;3. 保存并退出编辑器 步骤二&#xff1a;更改 Jenkins 目录的权限步骤三&#xff1a;重新加载 systemd 配置…...

wordpres当前分类调用父分类的名称和链接

在WordPress中&#xff0c;如果你想在当前分类页面调用并显示父分类的名称和链接&#xff0c;你可以使用以下代码片段&#xff1a; <?php // 获取当前分类的ID $cat_id get_queried_object_id();// 获取当前分类的父分类ID $parent_id get_term($cat_id, category)->…...

TCP客户端模拟链接websocket服务端发送消息(二)

兄弟们&#xff0c;我来填坑了&#xff0c;o(╥﹏╥)o o(╥﹏╥)o o(╥﹏╥)o o(╥﹏╥)o o(╥﹏╥)o o(╥﹏╥)o&#xff0c;前几天写了个tcp模拟websocket客户端的以为完成&#xff0c;后面需要发送消息给服务端&#xff0c;以为简单不就是一个发送消息么&#xff0c;这不是一…...

PyJWT与云原生应用集成的终极指南:如何构建安全的微服务架构

PyJWT与云原生应用集成的终极指南&#xff1a;如何构建安全的微服务架构 【免费下载链接】pyjwt JSON Web Token implementation in Python 项目地址: https://gitcode.com/gh_mirrors/py/pyjwt PyJWT&#xff08;Python JSON Web Token&#xff09;是一个功能强大且易于…...

罕见模式检测新突破:docta的rare_score算法原理与实现

罕见模式检测新突破&#xff1a;docta的rare_score算法原理与实现 【免费下载链接】docta A Doctor for your data 项目地址: https://gitcode.com/gh_mirrors/do/docta 在数据科学领域&#xff0c;识别和处理罕见模式一直是一项极具挑战性的任务。docta作为一款专注于数…...

实测:千元安卓机离线跑DeepSeek-R1 1.5B模型,写代码、解数学题够用吗?

千元安卓机实测&#xff1a;离线运行DeepSeek-R1 1.5B模型的全场景性能报告 去年我在西藏旅行时&#xff0c;手机全程处于无信号状态&#xff0c;却需要紧急处理一封英文邮件。当时就幻想如果AI模型能完全离线运行该多好——没想到半年后这个愿望已成现实。最近一周&#xff0c…...

OpenClaw终极效率手册:gemma-3-12b-it驱动的50个日常自动化技巧

OpenClaw终极效率手册&#xff1a;gemma-3-12b-it驱动的50个日常自动化技巧 1. 为什么选择OpenClawgemma-3-12b-it组合 去年冬天&#xff0c;当我第一次在本地部署OpenClaw时&#xff0c;最头疼的问题就是模型选择。试过多个开源模型后&#xff0c;最终锁定gemma-3-12b-it——…...

嵌入式工程师的中年危机与转型策略

1. 嵌入式工程师的中年危机&#xff1a;一个行业的缩影44岁的梧桐&#xff0c;一位拥有21年嵌入式开发经验的资深架构师&#xff0c;在2023年的寒冬里收到了人生第一封解约通知书。这个场景让我想起公司上周的招聘会——38岁的候选人简历被默默放进了"待定"文件夹&am…...

glm-5-free不输付费版!DMXAPIAI模型聚合平台,如何调用免费大模型API?

中关村论坛发布AutoGLM 沉思智能体&#xff0c;具备深度研究与电脑操作双重能力&#xff0c;GLM-5.1 编程能力与全球顶尖模型 Claude Opus 4.6 差距仅2.6 分&#xff0c;整体呈现技术迭代、商业化与资本市场的全面提速态势。智谱AI正式推出GLM-5-free开源模型&#xff0c;凭借与…...

药片机MCGS6.2 与西门子 S7 - 200 PLC 联机程序探究

药片机MCGS6.2和西门子S7-200plc联机程序4&#xff0c;在自动化生产领域&#xff0c;药片机的精准控制至关重要。MCGS6.2 作为一款优秀的人机界面组态软件&#xff0c;与西门子 S7 - 200 PLC 配合&#xff0c;能实现高效的自动化控制。今天咱就唠唠它们联机程序的一些要点。 通…...

GD32与STM32替换实战:硬件差异与移植要点

1. GD32与STM32替换背景解析在当前的全球芯片供应环境下&#xff0c;许多工程师不得不面对从STM32转向国产替代方案的选择。作为国内领先的MCU厂商&#xff0c;兆易创新(GigaDevice)的GD32系列因其与STM32的高度兼容性&#xff0c;成为最受欢迎的替代方案之一。我曾在三个量产项…...

政府科技管理部门如何优化区域科技创新治理?

观点作者&#xff1a;科易网-国家科技成果转化&#xff08;厦门&#xff09;示范基地 摘要 在数智时代背景下&#xff0c;区域科技创新治理的复杂性显著提升&#xff0c;传统治理模式面临资源分散、服务碎片化、匹配效率低等核心痛点。政府科技管理部门亟需借助“数智产品共享…...

javaweb高校两校区通勤校车预约系统的设计与实现 论文

目录同行可拿货,招校园代理 ,本人源头供货商功能需求分析用户管理校车班次管理预约功能核销与签到数据统计通知系统技术实现要点前端设计后端逻辑数据库设计安全机制项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作同行可拿货,招…...