性能优化之防抖与节流
(一)防抖
(1)定义:单位事件内,频繁触发,只执行最后一次(像王者荣耀的回城操作)
(2)使用场景:搜索输入框、手机号邮箱输入检测
(3)如何使用防抖
(3.1)lodash处理防抖
引入lodash.min.js,用其提供的函数为_.debounce(fun,时间)
第一个参数为要处理的函数,第二个为过了多少秒执行函数
(3.2)手写防抖函数
核心思路:利用定时器setTimeout实现
- 声明一个定时器变量
- 当鼠标每次滑动先判断是否有定时器了,如果有则先清除以前的定时器
- 如果没有定时器则开启定时器,记得存在变量里面
- 在定时器里面调用要执行的函数
function debounce(fn,t){
let time
// 如果直接写函数,则页面一打开就会执行函数,且执行一次,所以要返回一个函数
return function(){
if(time) clearTimeout(time)
time=setTimeout(function(){
fn()
},t)
}
}
(二)节流
(1)节流定义:单位时间内,频繁触发,只执行一次(例如技能冷却,等几秒后才能执行下一次的代码)
(2)应用场景:鼠标移动mousemove、页面尺寸缩放resize、滚动条滚动scroll等等
(3)如何实现节流
(3.1)lodash处理节流
_.throttle(fn,时间),第一个参数为要执行的函数,第二个参数为最多多少秒执行一次函数
(3.2)手写节流函数
核心思路:利用定时器setTimeout实现
- 声明一个定时器变量
- 当鼠标每次滑动先判断是否有定时器了,如果有则不开启定时器
- 如果没有定时器则开启定时器,记得存在变量里面
- 在定时器里面调用要执行的函数,定时器里面要用time=null把定时器清空
// 手写节流函数
function throttle(fn,t){
let time=null
return function(){
if(!time){
time=setTimeout(function(){
fn()
// 在setTimeout中无法删除定时器,因为定时器还在运作,应使用time=null,而不是clearTimeout
time=null
},t)
}
}
}
相关文章:
性能优化之防抖与节流
(一)防抖 (1)定义:单位事件内,频繁触发,只执行最后一次(像王者荣耀的回城操作) (2)使用场景:搜索输入框、手机号邮箱输入检测 &…...
数组模拟单链表
实现一个单链表,链表初始为空,支持三种操作: 向链表头插入一个数; 删除第 k个插入的数后面的数; 在第 k个插入的数后插入一个数。 现在要对该链表进行 M次操作,进行完所有操作后,从头到尾输出整…...
蓝桥杯刷题第十四天
第二题:不同子串题目描述本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。一个字符串的非空子串是指字符串中长度至少为 1 的连续的一段字符组成的串。例如,字符串aaab 有非空子串 a, b, aa, ab, aaa, aa…...
面试了8家软件公司测试岗位,面试题大盘点,我真的尽力了
包含的模块:本文分为十九个模块,分别是:软件测试 基础、liunx、MySQL、web测试、接口测试、APP测试 、管理工具、Python、性能测试、selenium、lordrunner、计算机网络、组成原理、数据结构与算法、逻辑题、人力资源需要的可以看文末获取方式…...
Activiti 工作流简介
1、什么是工作流 工作流(Workflow),就是通过计算机对业务流程自动化执行管理。它主要解决的是“使在多个参与者之间按照某种预定义的规则自动进行传递文档、信息或任务的过程,从而实现某个预期的业务目标,或者促使此目标的实现”。 1.2、工作…...
【华为机试真题详解 Python实现】统计差异值大于相似值二元组个数【2023 Q1 | 100分】
文章目录 前言题目描述输入描述输出描述题目解析参考代码前言 《华为机试真题详解》专栏含牛客网华为专栏、华为面经试题、华为OD机试真题。 如果您在准备华为的面试,期间有想了解的可以私信我,我会尽可能帮您解答,也可以给您一些建议! 本文解法非最优解(即非性能最优)…...
【C++】Google编码风格学习
Google规范线上地址:https://zh-google-styleguide.readthedocs.io/en/latest/ 文章目录1. 头文件2. 作用域3. 类4. 函数5. 其他C特性6. 命名约定7. 注释8. 格式1. 头文件 每个cpp/cc文件都对应一个h头文件,除单元测试代码和只包含main()的文件外。 所…...
JavaScript 中的Promise 函数
JavaScript 中的Promise 函数 目录JavaScript 中的Promise 函数1 创建Promise2 Promise的方法3 Promises的状态4 Promise的使用5 返回 Promise 类型6 Promise级联使用在现在的前端开发中我们常常会使用到 JavaScript Promise 函数,但是很多人都不能正确理解Promise …...
学校教的Python,找工作没企业要,太崩溃了【大四真实求职经历】
如果只靠学校学的东西去找工作,能找到工作吗? 今天给大家看一个粉丝的真实求职案例,想做Python方面的工作,投了二十几个简历却没人要,心态崩了。为什么没人要?我来告诉你答案。 然后我还会结合我的这些年的…...
快看!这只猫两次登上 Github Trending !!!
前几天我在逛 Github Trending,无意间发现这个Postcat 登上榜单 !好奇心驱使我去了解这个 Postcat。近期它上新了几个有意思的插件,其中 ChatGPT 插件,用户可以直接省去复杂的流程,直接体验 ChatGPT,懂的都懂ÿ…...
Linux->文件系统初识
目录 前言: 1 认识文件 2 文件使用 2.1 文件加载 2.2 外设文件使用 3 文件接口和文件描述符 3.1 文件系统调用接口 open: 3.2 文件描述符 4 缓冲区 前言: 在大家看这篇文章之前,我得提出几个问题: 1. 我们有多…...
InfluxDB和IotDB介绍与性能对比
InfluxDB简介 InfluxDB 是用Go语言编写的一个开源分布式时序、事件和指标数据库,无需外部依赖。用于存储和分析时间序列数据的开源数据库。 适合存储设备性能、日志、物联网传感器等带时间戳的数据,其设计目标是实现分布式和水平伸缩扩展。 InfluxDB 包括用于存储和…...
计算机体系结构(校验码+总线)
校验码计算机系统运行时,为了确保数据在传送过程中正确无误,一是提高硬件电路的可靠性;二就是是提高代码的校验能力,包括查错和纠错。通常使用校验码的方法检测传送的数据是否出错。这里的校验码主要是指循环冗余校验码࿰…...
JavaWeb《三》Request请求转发与Response响应
🍎道阻且长,行则将至。🍓 本文是javaweb的第三篇,介绍了Request请求转发与Response响应。 上一篇:JavaWeb《二》Servlet、Request请求 下一篇:敬请期待 目录一、Request请求转发🍏二、Response对…...
断言assert
assert作用:我们使用assert这个宏来调试代码语法:assert(bool表达式)如果表达式为false,会调用std::cout<<abort函数,弹出对话框,#include<iostream> #include<cassert> void…...
【Java项目】完善基于Java+MySQL+Tomcat+maven+Servlet的博客系统
目录一、准备工作二、引入依赖三、创建必要的目录四、编写代码五/六、打包部署(直接基于 smart tomcat)七、验证代码正式编写服务器代码编写数据库相关的操作代码创建数据库/表结构(数据库设计)数据库代码封装数据库操作封装针对数据的增删改查!博客列表页约定前后端…...
详解结构体内存对齐
目录 前言 一、内存大小的计算 1.规则 2.练习 二、为什么要有内存对齐 1.移植原因 2.性能原因 三、修改默认对齐数 总结 前言 本文针对结构体大小的计算进行深度剖析。结构体的大小要遵守内存对齐,在绝大数情况下,会浪费空间。但是有其的价值&…...
指针:程序员的望远镜
指针:程序员的望远镜一、什么是指针1.1 指针的定义1.2 指针和普通变量的区别1.3 指针的作用1.4 指针的优点和缺点二、指针的基本操作2.1 取地址运算符"&"2.2 指针的声明与定义2.3 指针的初始化2.4 指针的解引用2.5 指针的赋值2.6 指针的运算2.7 指针的…...
【python实现学生选课系统】
一、要求: 选课系统 管理员: 创建老师:姓名、性别、年龄、资产 创建课程:课程名称、上课时间、课时费、关联老师 使用pickle保存在文件 学生: 学生:用户名、密码、性别、年龄、选课列表[]、上课记录{课程…...
备受青睐的4D毫米波成像雷达,何以助力高阶自动驾驶落地?
近日,海外媒体曝出特斯拉已向欧洲监管机构提交车辆变更申请,并猜测特斯拉最新的自动驾驶硬件HW4.0或将很快量产上车。据爆料,HW4.0最大的变化是马斯克放弃的毫米波雷达又加了回来,根据国外知名博主Greentheonly的拆解分析…...
wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...
XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...
C++.OpenGL (10/64)基础光照(Basic Lighting)
基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...
智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...
嵌入式常见 CPU 架构
架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集,单周期执行;低功耗、CIP 独立外设;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel(原始…...
前端中slice和splic的区别
1. slice slice 用于从数组中提取一部分元素,返回一个新的数组。 特点: 不修改原数组:slice 不会改变原数组,而是返回一个新的数组。提取数组的部分:slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...
HTML中各种标签的作用
一、HTML文件主要标签结构及说明 1. <!DOCTYPE html> 作用:声明文档类型,告知浏览器这是 HTML5 文档。 必须:是。 2. <html lang“zh”>. </html> 作用:包裹整个网页内容,lang"z…...
Springboot 高校报修与互助平台小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,高校报修与互助平台小程序被用户普遍使用,为…...
