VUE中使用防抖和节流

2023-11-16

目的:减少请求次数,节省资源
防抖:在事件触发n秒后执行函数,如果在n秒内再次出发,就重新计算
节流:在多次执行某一动作时,限制为每隔一段时间执行一次函数。
防抖:
连续的事件,只需触发一次:

eg:
高频率的点击
防止表单重复提交
输入框搜索。输完,再发送请求
鼠标的mousemove、mouseover

1,简单封装(不需要传参的情况,setTimeout就可以解决)

export const debounce = (fn,delay) => {
	let timer = null;
	if(timer){
		clearTimerout(timer)
	}
	timer = setTimerout(() => { fn() }, delay)
}

2,封装(需要传参的情况)

export const debounce = (fn,delay) => {
	let timer = null;
	return function () {
		clearTimerout(timer)
		let args = Array.prototype.slice.call(arguments)
		timer = setTimerout(() => { fn() }, delay)
	}
}

节流:
间隔一段时间执行一次:

eg:
scroll以及鼠标移动事件
1,封装(setTimeout就可以解决)

export const throttle = (fn,delay) => {
	let timer = null;
	return function () {
		let context = this;
		let args = Array.prototype.slice.call(arguments)
		if(timer){
			return
		}
		timer = setTimerout(() => { 
			fn.apply(context, args) 
			timer = null
		}, delay)
	}
}

2,封装(new Date()解决)

export const throttle = (fn,delay) => {
	let prev = 0;
	return function () {
		let now = new ;
		let context = this;
		let args = Array.prototype.slice.call(arguments)
		if(now - prev >=delay){
			fn.apply(context, args) 
			prev = now
		}
	}
}

另外(工具库):
Underscore.js 是一个实用的JavaScript工具库,提供了类似 Prototype 功能的编程支持,但没有对 JavaScript 内置的对象进行扩展。

import underscore from 'underscore';
underscore.debounce(this.test, 1000)

Lodash.js JavaScript 实用工具库。

import lodashfrom 'lodash';
lodash.debounce(this.test, 1000)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VUE中使用防抖和节流 的相关文章

随机推荐

  • 5G QoS控制原理专题详解(7)-Default QoS Flow探秘

    相关文章会在公众号同步更新 最近工作忙 更新完公众号后 经常容易忘记再CSDN上再发 公众号上的文章更新的能快一些 各位同学有兴趣可以关注一下 公众号 5G通信大家学 持续更新的相关5G内容都是直接根据3GPP整理 保证更新内容的准确性 避
  • 【MybatisPlus逆向工程】代码生成器

    使用mybatis plus的逆向工程生成entity controller service mapper的初始代码 参考链接 https baomidou com pages d357af E6 B7 BB E5 8A A0 E4 BE
  • linux:ubuntu 查看ip

    解决方法 ifconfig a 或者sudo vi etc netplan 00 installer config yaml 进行查看
  • SpringSecurity基本使用

    文章目录 1 基本使用 2 自定义配置用户名与密码 3 自定义登录页面 4 基于权限访问控制 5 自定义403 6 使用注解 Secured PreAuthorize PostAuthorize PostFilter PreFilter 1
  • 芯片组x299是服务器主板吗,X299主板怎么样/值得买吗?新一代酷睿i9和发烧级X299主板全面深度评测...

    主板外观 配置 丰富的PCIe扩展插槽一向是Extreme至尊级平台的优势之处 5条长插槽中的两条有LED灯效设计和合金固化 需要组双路显卡的时候就优先使用这两条合金固化的插槽就好 CPU供电模块 CPU供电模块有9相合金数字供电 也有设计
  • pandas对文本数据进行长度统计

    在NLP的各项任务中 都需要对语料的长度有一个概括性的了解 例如平均长度 最大长度 大多数语料的长度范围等 以此来确定输入模型时的最大文本长度 pandas库有一种写法可以快速的统计文本语料的长度情况 pd pandas Series po
  • Ubuntu 挂载硬盘

    安装 nfs服务 三台服务器都需要安装 sudo apt get install nfs kernel server nfs common 数据盘操作 安装 完成后在数据盘服务器 修改etc exports文件增加共享盘 home Odoo
  • Arduino - PC817C光耦

    元件简介 PC817C是光隔离线性反馈控制器件 是PC817系列中常用的一个型号 左边 1 2脚 输入端 控制端 是一个发光二极管 右边 3 4脚 输出端 受控端 是一个三极管 CE极 控制端与受控端是隔离的 PC817C主要技术参数 控制
  • pandas 更改单元格的值,使用索引为pandas DataFrame中的特定单元格设置值

    I ve created a Pandas DataFrame df DataFrame index A B C columns x y and got this x y A NaN NaN B NaN NaN C NaN NaN Then
  • python collections.OrderedDict有序字典的使用

    detectron2中大量的使用OrderedDict 有序字典 有序字典可以按字典中元素的插入顺序来输出 python的基础数据类型中的字典类型分为 无序字典与有序字典两种类型 1 无序字典 普通字典 遍历一个普通字典 返回的数据和定义字
  • 关于api-ms-win-crt-runtime

    关于api ms win crt runtime 1 1 0 dll缺失的解决方案 问题原因 有时 我们在打开文件程序的时候经常出现一些关于以下的错误 无法启动此程序因为计算机中丢失api ms win crt runtime 1 1 0
  • C语言 输出 1000 对孪生素数

    孪生素数就是差值为 2 的成对素数 例如3和5 5和7 11和13 代码实现 include
  • 如何解决vue项目打包内存溢出问题

    在打包命令配置文件中加入图中代码即可 cross env NODE OPTIONS max old space size 4096
  • string的用法

    std string的初始化 std string 变量名称 字符串 要截取的长度 std string str 123456 3 str 123 注 中文时支持不佳 std string 变量名称 字符串 起始位置 截取长度 std st
  • 第7篇 rabbitmq 创建SocketFrameHandler

    本节主要是熟悉socketFrameHandlerFactory类 真正涉及到socket流处理器 展示如下类图 我们本文关心是SocketFrameHandlerFactory 和SocketFrameHandler 由类图可以知道Soc
  • 安全狗linux 安装教程,linux网站安全狗(apache版)安装教程

    以32位安装包为例子 64位安装包只要将对应的32改成64即可 步骤一 到http safedog cn下载软件安装包 tar gz格式 safedogwz linux32 tar gz 也可以采取wget的方式下载安装包 wget htt
  • 如何制作和训练自己的数据集(YoloV5)

    标注方法 1 自己获取的数据集 人工进行标注 全人工 2 自己获取的数据集 首先使用训练好的网络标注一遍 然后手动进行微调 半人工 3 仿真数据集 GAN网络来生成自己的数据集 synthetic data 标注工具 1 CVAT 需要安装
  • undefined 和 undeclared 的区别

    var a undefined b b is not defined 区别 在变量作用域中已经申明但没有赋值的变量 如 a 是undefined 相反 在变量作用域中没有申明过的变量 是undeclared 我们试图访问 undeclare
  • ahook中常用的一些hooks

    官方文档 https ahooks js org zh CN 以下总结一些个人认为非常实用的hook 1 useRequest 请求 import useRequest from ahooks const getSome async gt
  • VUE中使用防抖和节流

    目的 减少请求次数 节省资源 防抖 在事件触发n秒后执行函数 如果在n秒内再次出发 就重新计算 节流 在多次执行某一动作时 限制为每隔一段时间执行一次函数 防抖 连续的事件 只需触发一次 eg 高频率的点击 防止表单重复提交 输入框搜索 输