提升网页交互体验的秘密武器——防抖和节流
说在前面
在现代Web开发中,提高网页性能是至关重要的。本文介绍了防抖和节流这两种常用的性能优化技术,通过控制函数的执行频率,有效减少不必要的计算和网络请求,从而提升用户体验和页面加载速度。
函数节流
节流是指限制一个函数在一定时间内只执行一次。当持续触发事件时,保证每隔一段时间只执行一次事件处理函数。举例来说,假设有一个按钮点击事件会触发某个函数,通过节流的方式,即使用户频繁点击按钮,该函数也只会在一定时间间隔内执行一次。
function throttle(func, ms = 1000) {//标记是否可以执行let canRun = true;return function (...args) {//不可执行if (!canRun) return;//执行后设置不可执行canRun = false;//设置执行周期setTimeout(() => {func.apply(this, args);//重置标记canRun = true;}, ms);}
}
测试 :
const task = () => { console.log('run task') };
const throttleTask = throttle(task, 1000);
//鼠标连续点击,在设置的执行周期内只会触发一次
window.addEventListener('click', throttleTask);
应用:
- 滚动加载,加载更多或滚动到底部监听
- 搜索框,搜索联想功能
- 高频点击提交,表单重复提交
函数防抖
防抖是指在事件被触发指定时间后,才执行事件处理函数。如果在这个指定时间内又有相同事件被触发,则这个计时就会被重新开始。举例来说,假设有一个输入框用于搜索,用户在输入过程中会触发搜索事件,通过防抖的方式可以确保用户停止输入一段时间后才执行实际的搜索操作,避免频繁触发搜索请求。
function debounce(func, ms = 1000) {//定时器IDlet timer;return function (...args) {//清除定时器if (timer) {clearTimeout(timer);}//设置函数执行时间timer = setTimeout(() => {func.apply(this, args);}, ms);}
}
测试 :
const task = () => { console.log('run task') };
const debounceTask = debounce(task, 1000);
//鼠标连续点击,只会触发最后一次
window.addEventListener('click', debounceTask);
应用 :
- 手机号、邮箱正则输入检测
- 搜索框输入:用户最后一次输入完,再发送请求
- 窗口大小:窗口调整完成后,计算窗口大小,防止重复渲染
公众号
关注公众号『前端也能这么有趣』,获取更多新鲜内容。
说在后面
🎉 这里是 JYeontu,现在是一名前端工程师,有空会刷刷算法题,平时喜欢打羽毛球 🏸 ,平时也喜欢写些东西,既为自己记录 📋,也希望可以对大家有那么一丢丢的帮助,写的不好望多多谅解 🙇,写错的地方望指出,定会认真改进 😊,偶尔也会在自己的公众号『
前端也能这么有趣』发一些比较有趣的文章,有兴趣的也可以关注下。在此谢谢大家的支持,我们下文再见 🙌。
相关文章:
提升网页交互体验的秘密武器——防抖和节流
说在前面 在现代Web开发中,提高网页性能是至关重要的。本文介绍了防抖和节流这两种常用的性能优化技术,通过控制函数的执行频率,有效减少不必要的计算和网络请求,从而提升用户体验和页面加载速度。 函数节流 节流是指限制一个函数…...
HX3002入耳检测光感驱动调试-感0x08 寄存器溢出,不变化错误问题解决方法
是否需要申请加入数字音频系统研究开发交流答疑群(课题组)?可加我微信hezkz17, 本群提供音频技术答疑服务,+群赠送语音信号处理降噪算法,蓝牙耳机音频,DSP音频项目核心开发资料, 读取光感0x08 寄存器溢出,不变化错误问题?原因 原因:没有读取到0x08数据,没有读0x…...
目标检测开源数据
KITTI KITTI数据集下载(百度云)_kitti数据集百度云-CSDN博客 KITTI数据集下载及解析_kitti bin文件标签-CSDN博客 KITTI 3D目标检测数据集解析(完整版)_kitti数据集结构-CSDN博客 KITTI数据集简介与使用_kitti数据见一个视频多…...
AI模特换装的前端实现
本文作者为 360 奇舞团前端开发工程师 随着AI的火热发展,涌现了一些AI模特换装的前端工具(比如weshop网站),他们是怎么实现的呢?使用了什么技术呢?下文我们就来探索一下其实现原理。 总体的实现流程如下&am…...
git-5
1.GitHub为什么会火? 2.GitHub都有哪些核心功能? 3.怎么快速淘到感兴趣的开源项目 github上面开源项目非常多,为了我们高效率的找到我们想要的资源 根据时间 不进行登录,是没有办法享受到高级搜索中的代码功能的,登录…...
qt 5.15.2压缩和解压缩功能
qt 5.15.2压缩和解压缩功能 主要是添加qt项目文件.pro内容: 这里要先下载quazip的c项目先编译后引入到本项目中/zip目录下 INCLUDEPATH ./zip CONFIG(debug, debug|release) {win32:win32-g: PRE_TARGETDEPS $$PWD/zip/libquazipd.awin32:win32-g: LIBS -L$$PWD…...
thinkphp6出现 htmlentities() expects parameter 1 to be string, array given
为避免出现 XSS 安全问题, thinkphp6默认变量输出都会使用 htmlentities 方法进行转义 输出。 如果不想被转义输出,模板渲染时,需要在变量后面加上 raw方法,如:{$data|raw} 1、出现问题前的代码 PHP代码$this->assi…...
【android开发-03】android中Intent的用法介绍
1,Intent的作用 在Android开发中,Intent的使用非常广泛,包括启动Activity、启动Service、发送广播等。是各组件间交互的一种重要方式,他不仅可以指明当前组件想要执行的动作,还可以在不同组件间传递数据。 Intent可以…...
Java中时间工具详解:java.time包的应用
引言 时间在软件开发中是一个至关重要的概念,而Java自从引入java.time包后,提供了更加强大和灵活的时间处理工具。本文将深入介绍java.time包中的一些常用时间工具,帮助你更好地处理日期和时间的操作。 1. LocalDate - 处理日期 LocalDate…...
mysql 日志分析
程序启动标志 可以直接全局搜索,查看启动了几次 可以看到总共11次,当前是第2次 如何判断mysql是正常关闭,手动启动的 下图中启动之前出现 Shutdown complete打印说明启动之前是正常关闭的...
网络运维与网络安全 学习笔记2023.11.30
网络运维与网络安全 学习笔记 第三十一天 今日目标 实现AP自动注册、配置WLAN业务参数、无线终端通过wifi互访 实现AP自动注册 项目背景 企业内网的大量AP已经通过DHCP的方式获得IP地址 为了实现后期大量AP的统一管理,希望通过AC实现集中控制 在AC设备上&#…...
Perplexity 推出全新大型在线语言模型
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
python中的函数定义
默认参数 注: 在Python中,print(x, and y both correct)是一条打印语句(print statement),用于将一条消息输出到控制台或终端。它的作用是将变量x的值和字符串and y both correct同时输出到屏幕上。 在这个语句中&…...
信贷销售经理简历模板
这份简历内容,以信贷销售经理招聘需求为背景,我们制作了1份全面、专业且具有参考价值的简历案例,大家可以灵活借鉴。 信贷销售经理简历模板在线编辑下载:百度幻主简历 求职意向 求职类型:全职 意向岗位ÿ…...
js事件流与事件委托/事件代理
1 事件流 事件流分为两步,一是捕获,二是冒泡 1.1 捕获概念 捕获就是从最高层一层一层往下找到最内部的节点 1.2 冒泡概念 捕获到最小节点后,一层一层往上返回,像是气泡从最底部往上冒一样,由于水深不同压强不同&…...
代码随想录算法训练营第三十八天| 509 斐波那契数 70 爬楼梯 746 使用最小花费爬楼梯
509 斐波那契数 class Solution {public int fib(int n) {int f[] new int[n 5];f[0] 0;f[1] 1;for(int i 2;i < n;i){f[i] f[i - 1] f[i - 2];}return f[n];} } 时间复杂度O(n) 空间复杂度O(n) 70 爬楼梯 class Solution {public int climbStairs(i…...
windows 此系统禁止运行脚本报错处理
windows 此系统禁止运行脚本报错处理 start 在命令行中运行执行的脚本,运行原理可以参考文章 《》本文主要介绍,如何处理window默认的对脚本运行的限制。 详细说明 出现报错如下: 主要原因就是系统默认禁止了在 powershell 环境下某些脚…...
西南科技大学数字电子技术实验一(数字信号基本参数与逻辑门电路功能测试及FPGA 实现)FPGA部分
一、 实验目的 1、掌握基于 Verilog 语言的 diamond 工具设计全流程。 2、熟悉、应用 Verilog HDL 描述数字电路。 3、掌握 Verilog HDL 的组合和时序逻辑电路的设计方法。 4、掌握“小脚丫”开发板的使用方法。 二、 实验原理 与门逻辑表达式:Y=AB 原理仿真图: 2 输入…...
List系列集合
List系列集合特点:有序,可重复,有索引 ArrayList:有序,可重复,有索引 LinkedList:有序,可重复,有索引 (底层实现不同!适合的场景不同!…...
SQL 金额数值转换成中文大写
需求:将金额转换成中文大写格式填入单据合计行: _佰_拾_万_仟_佰_拾_元_角_分 1234567.89 壹佰贰拾叁万肆仟伍佰陆拾柒元捌角玖分 1.函数转换 drop function n2C;CREATE FUNCTION n2C (num numeric(14,2)) RETURNS VARCHAR(20) AS BEGIN …...
Flink StateBackend详解:大数据状态存储方案
Flink StateBackend详解:大数据状态存储的底层逻辑与实践 关键词 Flink 流处理、StateBackend、状态存储、Checkpoint、Exactly-Once、RocksDB、FsStateBackend 摘要 在大数据实时计算领域,状态(State)是流处理从"无状态计算…...
R语言新手必看:ggplot2安装失败的5种常见原因及解决方法(附完整代码)
R语言ggplot2安装问题全解析:从报错排查到可视化实战 第一次接触R语言的ggplot2包时,那种兴奋和期待往往会被突如其来的报错信息浇灭。作为R社区最受欢迎的数据可视化工具,ggplot2以其优雅的语法和强大的定制能力吸引了无数用户,但…...
CDN 无法播放音视频?流媒体回源与 Range 配置修复
流媒体应用现在越来越普及,CDN(内容分发网络)早已成为音视频流畅播放的核心支撑——靠边缘节点就近分发,既能降低延迟,又能减轻源站压力,让用户不用长时间等待就能看高清内容。但实际运维中,“C…...
漫画脸描述生成企业级安全方案:私有化部署保障原创角色数据不出域
漫画脸描述生成企业级安全方案:私有化部署保障原创角色数据不出域 1. 项目背景与核心价值 在二次元创作领域,角色设计是核心创作环节。传统的角色设计需要专业画师投入大量时间,从概念设计到细节刻画都需要反复修改。随着AI技术的发展&…...
【Python原生AOT编译终极指南】:2026年CPython 3.15+官方AOT源码级拆解与生产落地避坑清单
第一章:Python原生AOT编译的演进脉络与3.15官方定位Python长期以来以解释执行和字节码(.pyc)为默认运行范式,AOT(Ahead-of-Time)编译长期处于社区实验阶段。从Nuitka、Cython到PyO3/Rust绑定,再…...
Krita 5.3.0 与 6.0.0 发布:功能升级与技术革新
文本与工具革新,Krita 功能升级Krita 5.3.0 和 6.0.0 正式推出,带来了一系列显著的功能改进。文本工具被完全重写,支持在画布上进行所见即所得编辑,还能支持 OpenType 的所有特性以及文本置入形状,这大大提升了文字处理…...
文墨共鸣大模型处理Java八股文与面试题:智能学习与模拟面试
文墨共鸣大模型处理Java八股文与面试题:智能学习与模拟面试 准备Java技术面试,大概是每个开发者都绕不开的一道坎。面对海量的“八股文”知识点和层出不穷的面试题,你是不是也经历过这样的场景:翻开厚厚的面试宝典,感…...
从零到专业:League Director 让你的英雄联盟回放变成电影级大片
从零到专业:League Director 让你的英雄联盟回放变成电影级大片 【免费下载链接】leaguedirector League Director is a tool for staging and recording videos from League of Legends replays 项目地址: https://gitcode.com/gh_mirrors/le/leaguedirector …...
PasteMD用户调研报告:2024年文档格式转换需求分析
PasteMD用户调研报告:2024年文档格式转换需求分析 1. 调研背景与核心发现 最近整理了500份来自不同行业用户的实际反馈,这些反馈不是问卷里的标准答案,而是真实工作场景中留下的痕迹——有深夜赶论文时的抱怨截图,有项目汇报前的…...
基于OpenCASCADE7.4+OSG3.6.3+Qt5.12.7的多文档初级CAD/CAE...
基于opencascade7.4osg3.6.3qt5.12.7的多文档初级Cad/cae平台,支持十几种格式文件,包括step,igs,stl,obj,3ds,osg等,支持视角切换,显示模式切换,仿Cad命令注册机制,装配体显示,模型高…...
