防抖 节流 防抖和节流

防抖和节流可以通过使用 Lodash 库中的 debounce 和 throttle 方法来实现。

防抖(debounce)是指在一定时间内,如果事件持续触发,则只执行最后一次事件。常用于输入框搜索、滚动加载等场景。 回城

节流(throttle)是指在一定时间内,无论事件触发多少次,只执行一次事件。常用于滚动事件、窗口大小改变等场景。普攻

一、方法封装

export const debounce = (fn, delay = 0, immediate = false) => {let timeout;return (...args) => {if (immediate && !timeout) fn(...args);clearTimeout(timeout);timeout = setTimeout(() => {fn(...args);}, delay);};
};
// 节流函数
export const throttle = (func, delay) => {let timeoutId;let lastExecTime = 0;return function (...args) {const currentTime = Date.now();if (currentTime - lastExecTime < delay) {// 上次执行时间距当前时间未超过指定延迟,不执行函数clearTimeout(timeoutId);timeoutId = setTimeout(() => {lastExecTime = currentTime;func.apply(this, args);}, delay);} else {// 上次执行时间距当前时间已超过指定延迟,立即执行函数lastExecTime = currentTime;func.apply(this, args);}};
}

或者

/*** @desc 函数防抖* @param func 目标函数* @param wait 延迟执行毫秒数* @param immediate true - 立即执行, false - 延迟执行*/
export const debounce = function(func, wait = 1000, immediate = true) {let timer;console.log(1);return function() {console.log(123);let context = this,args = arguments;if (timer) clearTimeout(timer);if (immediate) {let callNow = !timer;timer = setTimeout(() => {timer = null;}, wait);if (callNow) func.apply(context, args);} else {timer = setTimeout(() => {func.apply(context, args);}, wait)}}
}
/*** @desc 函数节流* @param func 函数* @param wait 延迟执行毫秒数* @param type 1 使用表时间戳,在时间段开始的时候触发 2 使用表定时器,在时间段结束的时候触发*/
export const throttle = (func, wait = 1000, type = 1) => {let previous = 0;let timeout;return function() {let context = this;let args = arguments;if (type === 1) {let now = Date.now();if (now - previous > wait) {func.apply(context, args);previous = now;}} else if (type === 2) {if (!timeout) {timeout = setTimeout(() => {timeout = null;func.apply(context, args)}, wait)}}}
}

 二、操作案例

点击事件使用节流的思路(vue2的节流方法)

html:

 <view class="time"><uni-datetime-pickerv-model="valueTwoTimer"type="daterange"rangeSeparator="至"@change="changeTime"/><button @click="handleClickLook">搜索</button></view>

js: 

import { throttle } from 'lodash'export default {data() {return {scrollHeight: 0}},mounted() {// 监听滚动事件window.addEventListener('scroll', this.handleScroll)},beforeDestroy() {// 移除滚动事件监听window.removeEventListener('scroll', this.handleScroll)},methods: {// 节流函数handleScroll: throttle(function() {this.scrollHeight = window.scrollYconsole.log(this.scrollHeight)// 执行滚动操作}, 500)//查看按钮功能handleClickLook: throttle(function () {this.isFinish = 1;this.getInteilEnergyHisDatas(); //1.整体油耗this.getfuilOilInfo(); //2.燃油舱}, 3000),}
}

 点击事件使用节流的思路(vue3)

html:

<el-buttonclass="hdtbutton look"@click="handleClickLook"
>查询
</el-button>

js:

import { getAssetsFile, throttle } from "@/utils";
const handleClickLook = throttle(async () => {data.isFinish = 1;data.isTips = "加载中...";let info = {startTime: data.valueTwoTimer[0],endTime: data.valueTwoTimer[1],};//   const resApiData = await getInteilEnergyTotal(info); //接口数据const resApiData = false;console.log("resApiData>>>", resApiData);if (resApiData === false) {delayTimer = setTimeout(() => {data.isFinish = 2;data.isTips = "暂未接入";}, data.btnDelay);return;} else {if (resApiData.length && resApiData.length !== 0) {data.isFinish = 4;data.isTips = "接口数据获取成功";} else {data.isFinish = 3;data.isTips = "暂无数据";ElMessage({type: "warning",message: "暂无数据!",});}}
}, 3000);

其它,

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

有关介绍CVPR‘2024工作《持续学习的无干扰低秩适应》正式实施

一个不知名大学生&#xff0c;江湖人称菜狗 original author: Jacky Li Email : 3435673055qq.com Time of completion&#xff1a;2024.04.03 Last edited: 2024.04.03 代码&#xff1a;GitHub - liangyanshuo/InfLoRA&#xff1a;CVPR2024 工作 Interference-Free Low-Rank A…

LeetCode-热题100:240. 搜索二维矩阵 II

题目描述 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性&#xff1a; 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 示例 1&#xff1a; 输入&#xff1a; matrix [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[…

2014最新AI智能系统ChatGPT网站源码+Midjourney绘画网站源码+搭建部署教程文档

一、文章前言 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;那么如何搭建部署AI创作ChatGPT&#xff1f;小编这里写一个详细图文教程吧。已支持…

【Java基础】DOS命令

开始时间: April 8, 2024 结束时间: April 8, 2024 阶段: Done 绝对路径与相对路径 相对路径&#xff1a;从当前目录开始定位&#xff0c;形成的路径绝对路径&#xff1a;从**顶级目录&#xff0c;**开始定位&#xff0c;形成的路径 常用的 dos 命令 查看当前目录是有什么内…

图书馆自助借书机怎么借书

图书馆自助借书机借书流程如下&#xff1a; 1. 找到图书馆自助借书机&#xff0c;在机器上选择借书功能。 2. 输入自己的借书卡号或者身份证号码&#xff0c;如果是第一次借书&#xff0c;可能需要进行注册。 3. 输入图书的条形码号码&#xff0c;可以通过扫描条形码或者手动输…

子集生成的一些总结

对于给定的n&#xff0c;生成集合{1&#xff0c;2……n - 1}的子集 简单枚举有三种办法 1&#xff0c;增量构造法 一次选出一个元素放到集合中&#xff0c;每一次递归都需要输出集合&#xff0c;因为是子集 #include<cstdio> int A[1000000];void print_subset(int n,…

Hybrid混合开发 和 Android平台JSBridge的原理

书接上篇&#xff1a;移动端研发技术的进化历程 纯原生开发主要面临动态化和开发成本两个问题&#xff0c;而针对这两个问题&#xff0c;诞生了一些跨平台的动态化框架。 针对原生开发面临的问题&#xff0c;业界一直都在努力寻找好的解决方案&#xff0c;而时至今日&#xf…

【Shell语言学堂】Shell 脚本练习1

Shell 脚本练习 shell语言实战 Shell 脚本练习&#x1f4a7;CSDN划过手的泪滴t现有一个脚本可传入n个参数&#xff0c;要求在脚本中实现在终端输出第n个参数之前的所有参数(不包含第n个参数)编写一个计算bmi体质指数的脚本&#xff0c;该脚本需要用户输入身高和体重信息&#x…

Lakehouse 大数据概念

“Lakehouse” 是一个相对新的概念,是大数据理论中的一个重要发展方向。它试图结合传统的数据湖(Data Lake)和数据仓库(Data Warehouse)的优点,以创造一种更为灵活和强大的数据管理体系。 在传统的大数据架构中,数据湖用于存储原始、未加工的数据,而数据仓库则用于存储…

代码随想录day34 | 贪心算法P3 | ● 1005 ● 134 ● 135

1005.K次取反后最大化的数组和 给你一个整数数组 nums 和一个整数 k &#xff0c;按以下方法修改该数组&#xff1a; 选择某个下标 i 并将 nums[i] 替换为 -nums[i] 。 重复这个过程恰好 k 次。可以多次选择同一个下标 i 。 以这种方式修改数组后&#xff0c;返回数组 可能…

机器人客户端如何配置同步消息至多个群中

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。 前言 由于微信群的人数&#xff0c;最多是500人&#xff0c;如果有人的业务做的大&#xff0c;可能会同步创建好多个群&#xff0c;但是资料的不想多个群一起发&#xff0c;发给某个群&a…

[计算机网络] 当输入网址到网页

HTTP 首先&#xff0c;对URL进行解析&#xff0c;URL包含了Web服务器和对应的文件&#xff08;文件路径&#xff09; URL是请求服务器中的文件资源 通过Web服务器和对应文件来生产HTTP包&#xff08;超文本传输协议&#xff09; DNS 根据域名查询对应的IP地址 域名的层级 根…

下一代分层存储方案:CXL SSD

近日&#xff0c;在Memcon 2024大会上&#xff0c;三星推出了一款名为CXL Memory Module-Hybrid for Tiered Memory&#xff08;CMM-H TM&#xff09;&#xff0c;这款扩展卡配备了高速DRAM和NAND闪存&#xff0c;允许CPU和加速器远程访问额外的RAM和闪存资源。 那么&#xff0…

Kafka 线程模型痛点攻克: 提升分区写入 2 倍性能

01 引言 单分区写入在一些需要全局顺序消息的场景中具备重要应用价值。在一些严格保序场景下&#xff0c;需要将分区数设置为 1&#xff0c;并且只用单个生产者来发送数据&#xff0c;从而确保消费者可以按照原始顺序读取所有数据。此时&#xff0c;Kafka 的单分区写入性能将会…

Data Shapley Value 笔记

本文为 Data Shapley: Equitable Valuation of Data for Machine Learning 的阅读笔记&#xff0c;涉及论文中的 Data Shapley Value 计算公式、两种实现算法、实验应用部分的梳理。 为理解 Data Shapley Value&#xff0c;本文首先讨论 Shapley Value的相关内容&#xff0c;利…

Python基于Django的微博热搜、微博舆论可视化系统,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

K8s学习九(配置与存储_存储)

存储管理 Volumes HostPath 将节点上的文件或目录挂载到 Pod 上&#xff0c;此时该目录会变成持久化存储目录&#xff0c;即使 Pod 被删除后重启&#xff0c;也可以重新加载到该目录&#xff0c;该目录下的文件不会丢失 效果就是容器里的数据和主机里的数据进行共享 配置文…

蓝桥杯gcd汇总

gcd3014 问题描述 小明和小红是一对恋人&#xff0c;他们相爱已经三年了&#xff0c;在今年的七夕节&#xff0c;小明准备给小红一个特殊的礼物。他想要送给小红一些数字&#xff0c;让小红算出有多少对正整数 (a,b) 满足以下条件&#xff1a; clcm(a,b)−dgcd(a,b)x其中 c,…

JS-25-浏览器和浏览器对象

一、浏览器 由于JavaScript的出现就是为了能在浏览器中运行&#xff0c;所以&#xff0c;浏览器自然是JavaScript开发者必须要关注的。 目前主流的浏览器分这么几种&#xff1a; IE 6~11&#xff1a;国内用得最多的IE浏览器&#xff0c;历来对W3C标准支持差。从IE10开始支持E…

无人售货奶柜:开启便捷生活的新篇章

无人售货奶柜&#xff1a;开启便捷生活的新篇章 在这个快节奏的现代生活中&#xff0c;科技的革新不仅为我们带来了前所未有的便利&#xff0c;更在不经意间改变着我们的日常。其中&#xff0c;无人售货技术的出现&#xff0c;尤其是无人售货奶柜&#xff0c;已经成为我们生活…