前端_防抖节流

目录

一、防抖(debounce)

1.使用场景

2.js代码实现

3.lodash工具库使用

二、节流(throttle)

1.使用场景

2.js代码实现

3.lodash工具库使用


前端做项目,为了防止用户因为网络不好数据响应慢,导致进行多次点击,或者其他影响性能的操作,需要使用防抖和节流。

一、防抖(debounce)

防止抖动(只执行最后一次),单位时间(比如3秒)内事件触发时初始时间会被重置为当前时间,执行时间需在等待设置的单位时间(比如3秒),避免事件被误触发多次。代码实现重在清零 clearTimeout。

防抖可以比作等电梯,只要有一个人进来,就需要从当前时间往后再等3秒在上升电梯,A进入电梯(12:00),2秒后B进入电梯(12:02),那么电梯的启动时间就是,B进来时间点为初始时间0,往后3秒(12:05)。

1.使用场景

        ①表单验证

        ②搜索框联想搜索

        ③窗口调整

        ④按钮点击

        ⑤页面滚动

2.js代码实现

const debounce = (fn, time) => {
  let timer = null
  return (...args) => {
    const context = this
    if (timer) {
      clearTimeout(timer)
    }
    timer = setTimeout(() => {
      fn.call(context, ...args)
    }, time)
  }
}

3.lodash工具库使用

lodash是js工具库,涉及对数组,函数,集合,数学,数字,对象,字符串等处理数据的各种方法相对比较全。用起来也非常的简单。

首先安装lodash:

npm i lodash

使用:

<!-- html元素绑定事件-->
<div @click="changeSelectedOneClick($event, "666")">按钮</div>


//js代码,首先引入防抖函数debounce
import { debounce} from 'lodash';

/**
 * 按钮点击事件
 */
const changeSelectedOneClick = debounce((evt, str) => {
	console.log(str)
}, 3000);

当前代码,用户12:00点了一次按钮,2秒后(注意这个时间必须在你设置的单位时间内,比如当前案例就是3秒内。如3秒外那么就不设计防抖了),12:02又点了一次按钮,那么12:05时事件会执行,控制台输出“666”。

二、节流(throttle)

控制流量(单位时间内只触发一次),与服务器端的限流 (Rate Limit) 类似。代码实现重在开锁关锁 timer=timeout; timer=null。如果设置时间3秒,用户点击了按钮,那么3秒内只有第一次生效,再次点击无效。

1.使用场景

        ①按钮点击

        ②页面滚动

        ③输入框输入

2.js代码实现


const throttle = (fn, time) => {
  let activeTime = null
  return (...args) => {
    const context = this
    const current = Date.now()
    if (current - activeTime >= time) {
      fn.call(context, ...args)
      activeTime = Date.now()
    }
  }
}

3.lodash工具库使用

lodash是js工具库,涉及对数组,函数,集合,数学,数字,对象,字符串等处理数据的各种方法相对比较全。用起来也非常的简单。

首先安装lodash:

npm i lodash

使用:

<!-- html元素绑定事件-->
<div @click="changeSelectedOneClick($event, "666")">按钮</div>


//js代码,首先引入防抖函数throttle
import { throttle } from 'lodash';

/**
 * 按钮点击事件
 */
const changeSelectedOneClick = throttle((evt, str) => {
	console.log(str)
}, 3000);

当前代码,用户12:00点了一次按钮,控制台输出“666”。2秒后,12:02又点了一次按钮,那么这次无效,3秒内点击都无效。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/681928.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ARM的工作模式

ARM的几种工作模式 User : 非特权模式&#xff0c;大部分任务执行在这种模式 FIQ : 当一个高优先级&#xff08;fast) 中断产生时将会进入这种模式IRQ : 当一个低优先级&#xff08;normal) 中断产生时将会进入这种模式 Supervisor&#xff08;SVC&#xff09; : 当复位或软中断…

利用短视频平台,轻松引流获客:自动私信评论策略全解析

在数字化时代&#xff0c;短视频已成为互联网流量的新蓝海&#xff0c;其独特的视觉吸引力和高度的用户粘性为各行各业提供了前所未有的营销机遇。无论是初创企业还是成熟品牌&#xff0c;都能通过短视频平台有效触达目标客户&#xff0c;实现高效引流与获客。本文将深入探讨如…

高通开发系列 - 借助libhybris库实现Linux系统中使用Andorid库(2)

By: fulinux E-mail: fulinuxsina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅&#xff01; 你的喜欢就是我写作的动力&#xff01; 返回&#xff1a;专栏总目录 目录 参考上一篇文章&#xff1a;高通开发系列 - 借助libhybris库实现Linux系统中使用And…

高并发短视频系统设计:架构、存储与性能优化全解

1. 系统概况与需求分析 1.1 短视频系统简介 当前短视频行业的快速发展&#xff0c;加上用户对高清、流畅观看体验的需求不断提升&#xff0c;对系统的并发处理能力、视频处理速度、存储效率等多方面都提出了极高的要求。那么&#xff0c;我们首先需要了解一个完整的短视频系统…

美国年轻人热衷床上“摆烂”,沃尔玛发掘床上用品新商机!

美国年轻人近年来热衷于床上“摆烂”生活方式&#xff0c;这反映了他们对舒适放松的追求和现代生活的压力。沃尔玛作为零售业巨头&#xff0c;敏锐地捕捉到这一市场变化&#xff0c;发现了床上用品的新商机。 美国年轻人忙碌中渴望宁静空间。床成为他们放松、逃离现实压力的理想…

十二、配置注解执行SQL

简化一下流程&#xff0c;主要可以分为下面几步&#xff1a; 1.解析配置&#xff0c;写入配置项 2.执行SQL 3.封装结果 通过注解配置SQL主要体现在解析部分&#xff0c;这部分要分别做解析XML还是配置注解的接口&#xff0c;拿到sql以后&#xff0c;select的处理和insert/upda…

【C++】手动模拟String底层与深浅拷贝

在string类&#xff1a;版本、组件、构造、操作及应用和 C中string的一些超常用函数 (附习题)这两篇文章中我们已经了解到了string&#xff0c;现在让我们再来手动实现模拟一下吧~ 模拟实现string是为了更好的理解string函数的使用和深浅拷贝方面的知识~ 总体整理了两张思维导…

深度学习——TensorBoard的使用

官方文档torch.utils.tensorboard — PyTorch 2.3 documentation TensorBoard简介 TensorBoard是一个可视化工具&#xff0c;它可以用来展示网络图、张量的指标变化、张量的分布情况等。特别是在训练网络的时候&#xff0c;我们可以设置不同的参数&#xff08;比如&#xff1…

本轮牛市新趋势,跟随The First捕捉牛市Alpha

与以往牛市“百花齐放”的繁荣景象相比&#xff0c;本轮牛市颇具独特走势&#xff0c;呈现出了资金集中度高、财富聚集效应小的特点&#xff0c;绝大部分加密资产甚至跑不赢BTC的涨幅幅度。而以往大放色彩的公链币价值币的走势&#xff0c;甚至比不过牛尾才爆发的MEME币。这使得…

Python03:python代码初体验2

1、变量命名规范 1&#xff09;字母&#xff08;Unicode字符&#xff09;、数字、下划线&#xff0c;不能使用特殊字符&#xff0c;数字不能开头 2&#xff09;变量名是区分大小写的&#xff08;大小写敏感&#xff0c;x和X是两个不同的变量名&#xff09; 3&#xff09;不能使…

centos安装部署Mysql8详细教程

文章目录 一、下载安装1.下载2.安装 二、常见问题1.You must reset your password using ALTER USER statement before executing this statement2.IP is not allowed to connect to this mysql 结尾 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、…

文件批量改名工具软件NO.104

该工具基于 .Net 7.0 X86 编写&#xff0c;所以运行该软件就需要安装对应的环境&#xff0c;如果你在使用的时候弹出如上图所示的提示&#xff0c;就直接点击“是”前往官网下载吧 软件主要分为两块&#xff0c;上面是文件名规则&#xff0c;用于设置文件名&#xff1b;下方是文…

常见的Web漏洞——CORS

渗透做了多年的朋友都知道&#xff0c;大洞小洞都是漏洞。因此也学习、沉淀一下以前没重视的漏洞。 简介 CORS&#xff08;Cross-Origin Resource Sharing&#xff0c;跨源资源共享&#xff09;是一种由Web浏览器实现的安全策略&#xff0c;用于控制一个Web页面&#xff08;服…

vs2019 c++20 规范的头文件 <future> 源码注释和几个结论

&#xff08;1 探讨一&#xff09;在多线程中&#xff0c;需要线程返回值的可以用该头文件中的类。该头文件中模板类和模板函数定义很多&#xff0c;用一幅图给出模板类之间的关系&#xff0c;方便从整体上把握和记忆&#xff1a; &#xff08;2&#xff09;

618数码好物推荐!精选便宜又实用的数码产品推荐!

着618购物盛宴的脚步日益临近&#xff0c;你是否已经锁定了心仪的宝贝&#xff1f;那些曾让你心动不已的数码产品&#xff0c;现在正是以最低价收入囊中的绝佳时机。618不仅是一场购物狂欢&#xff0c;更是各大电商平台竞相推出优惠政策的盛宴。为了满足大家的需求&#xff0c;…

右键Open with VSCode打开Vue3项目

之前看到一些同事能够对项目根目录进行右键打开项目到 Microsoft VS Code &#xff0c;当时觉得挺不错的&#xff0c;于是乎今天自己折腾了一遍。 目录 1、创建vue3项目 2、更改注册表 # 打开注册表编辑器&#xff08;Registry Editor&#xff09; # 导航到以下注册表路径 …

宜选影票api接口如何申请密钥和授权呢?

宜选影票API接口的密钥申请和授权过程一般包括以下步骤&#xff0c;以下将按照清晰的格式分点表示和归纳相关信息&#xff1a; 注册开发者账号&#xff1a; 前往宜选影票的官方网站或开发者平台。注册一个开发者账号&#xff0c;填写必要的个人信息和联系方式。申请API访问权限…

使用apifox进行并发测试

1.普通的接口测试就不说了&#xff0c;非常简单 2.自动化测试

<网络安全>《88 国内主要企业网络安全公司概览(四)》

9 杭州迪普科技股份有限公司&#xff08;简称联软科技&#xff09; 信息内容LOGO成立日期创始于2008年总部浙江省杭州市滨江区月明路595号迪普科技18楼背景民营企业是否上市300768注册资本64,382.9039万主要产品网络安全数据安全交换机简介安全大数据处理引擎与AI智能分析引擎…

webgl_decals

ThreeJS 官方案例学习&#xff08;webgl_decals&#xff09; 1.效果图 2.源码 <template><div><div id"container"></div></div> </template> <script> // 光线投射相关代码 https://threejs.org/docs/index.html#api/z…