js函数防抖与节流

JS中的函数的节流和防抖 在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时 阅读详情

应用:当我们在监听浏览器窗口变化,滚动,输入框变化等事件的时候,这些事件的触发频率很高,如果回调里处理的逻辑较为复杂,这样会给浏览器造成很大的负担甚至导致浏览器崩溃,这时我们就需要通过防抖或节流来限制事件的触发频率。

1、防抖:给定一个时间长度,在这个时间长度内,如果某两次事件的触发间隔大于给定的时间长度,则进行事件逻辑处理,如果两次事件的触发间隔不大于给定时间长度,则会重置此时间,也就是说,如果事件一直在触发,且触发事件的时间间隔没有大于给定时间长度,则事件逻辑处理函数将一直不会触发,直到触发至间隔大于给定时间时才触发。

//函数防抖
function debounce(fn,t) {
	let timer = null
	return function() {
		let params = [].slice.apply(arguments)
		timer && clearTimeout(timer)
		timer = setTimeout(() => {
			fn.apply(this,params)
		},t)
	}
}

2、节流:同样给定一个时间长度,在这个给定的时间长度内,只要触发了事件,无论多少次,有且只会进行一次事件逻辑处理。

function throttle(fn,t) {
	let flag = false
	return function() {
		if(flag) return 
		flag = true
		setTimeout(() => {
			fn.apply(this,arguments)
			flag = false
		},t)
	}
}

注意:这里我们要明白,防抖和节流的只是事件的业务逻辑,并不是限制的事件本身的触发。

【JS函数】JS函数之防抖、节流函数 一、防抖debounce函数1.定义n秒后执行,事件触发后延迟执行,输入期间不执行触发操作。无操作及延迟时间过后触发,一般适用于频繁触发的操作。2.应用场景输入框中频繁的输入内容,搜索或者提交信息;频繁的点击按钮,触发某个事件;监听浏览器滚动事件,完成某些特定操作;用户缩放浏览器的resize事件。3.基本实现 二、节流throttle函数1.定义n秒内只执行一次,节流函数是规定一段时间内无法触发,时间过了才触发,即使不断输入值,但只要1秒钟过了,也会触发。2.应用场景监听页面的滚动事件;鼠标移动事件 阅读详情

相关推荐

Cadence 17.4 PSpice仿真555定时器输出方波

这里利用555定时器组成多谐振荡器产生1Hz的方波并用PSpice仿真其输出的方波波形。555定时器是一种广泛应用的中规模集成电路。根据其内部组成的不同,可分为双极型(555B)和CMOS型(555C)两类。两种类型的定时器各有所长。双极型定时器具有较大的驱动能力,其输出电流可达200mA,可直接驱动发光二级管、扬声器、继电器等负载。而CMOS型定时器的输入阻抗高、功耗低。

tj_nonstoper的博客 1万+

vue 防抖节流器

应用场景:我这里有一个图表需要在窗口改变大小的时候重绘图表的大小,但是窗口改变大小的事件过于频繁,需要增加一个节流器来进行处理,最终需要实现图表的自适应。

Whit3ZzT的博客 335

Unity3D实战:用EasyAR4.0稀疏空间地图打造AR导航应用(附完整代码)

本文详细介绍了如何使用Unity3D和EasyAR4.0的SparseSpatialMap功能构建AR导航应用。通过稀疏空间地图技术,开发者可以创建室内导航系统,解决传统GPS在室内环境中的局限性。文章包含完整代码示例,涵盖环境配置、地图构建、导航实现及性能优化等关键步骤,助力开发者快速掌握AR导航开发技巧。

t8u9v0的博客 1197

节流和防抖

节流 只允许一个函数在 X 毫秒内执行一次 触发事件 执行任务 设置时间间隔→如果时间间隔内有触发行为,就取消掉任务,如果时间间隔后有触发行为,就再次执行任务和设置时间间隔 详解: 如果需要统计用户滚动屏幕的行为来做出相应的网页反应,就需要进行节流,因为如果用户不断地滚动,就会不断产生请求,响应也会不断增加,容易导致网络阻塞。 解决办法是:在触发事件的时候马上执行任务,并设定时间间隔限制,在这段时间内,不管用户如何进行滚动都忽视操作,时间到了以后,如果检测到用户有滚动行为,再次执行任务并设置时间间隔

weixin_44669966的博客 258

Ansys Zemax与Speos协同设计:从HUD光学优化到驾驶环境可视化全流程解析

本文深入解析了如何利用Ansys Zemax与Speos进行协同设计,实现从HUD光学系统核心优化到驾驶环境可视化验证的全流程。文章强调了HUD设计是光学性能与视觉感知的深度耦合,通过Zemax进行精密光学设计,再利用Speos进行系统级仿真与感知模拟,最终完成从虚拟到现实的闭环验证,有效提升HUD产品的开发效率与可靠性。

weixin_29199873的博客 243

硬件级Dalvik字节码粒度无痕HOOK及VMP取址码定位分析

2.通过硬件读写断点的输出信息 可知pc寄存器就是art解释器的取码地址 直接硬件执行断点在这个pc 即可直接trace所有的smali执行流 通杀所有机型系统。本文即将探讨的是 如何在硬件级别实现dalvik bytecode粒度的无痕拦截技术 并实现鼠标点击一键hook 指哪儿打哪儿 感受 button power 的强大魅力!4.由于硬件断点是同步的 断下后可随时硬件dump下这一瞬间的app内存映像 写入unicorn的内存模拟执行。解释器在解释执行前必会读取内存中的bytecode。

2503_90751789的博客 1085

JavaScript中的防抖(Debounce)和节流(Throttle):作用与使用方式

防抖和节流是优化高频触发事件处理的两种常用技术。防抖侧重于限制函数在一定时间内只执行一次,而节流则侧重于限制函数在一定时间内执行的次数。在实际开发中,我们可以根据具体需求选择合适的技术来优化性能。

aike13ky的博客 941

[WeChatMsg]导出csv格式微信聊天记录的手把手教程

手把手教大家如何导出自己的聊天记录得到csv文件,即使是电脑小白也可以轻松学会o(* ̄▽ ̄*)ブ

weixin_51094633的博客 1万+

什么是防抖和节流?

什是防抖和节流?在进行窗口调整(resize)、滚动(scroll)以及输入框内容校验等操作时,若事件处理函数频繁调用,可能会给浏览器带来极大负担,从而导致用户体验变差。为了优化性能,我们可以使用防抖(debounce)和节流(throttle)技术来控制函数的调用频率,从而提高应用的效率和流畅度。它们的核心思想是通过设置时间间隔来限制函数的执行时机。

乐辞的博客 1033

汽车售后诊断 ODX 和 OTX 对比分析报告

在汽车行业不断发展的当下,汽车售后诊断技术对于保障车辆性能、维护车主权益以及提升汽车品牌服务质量起着至关重要的作用。随着汽车电子化程度的不断提高,售后诊断所涉及的数据和流程愈发复杂,这就促使行业需要更加标准化、高效化的诊断技术方案。开放诊断数据交换(ODX)和开放测试序列交换(OTX)便是在这样的背景下应运而生的两种重要标准,它们为汽车售后诊断提供了强大的支持。本报告将深入剖析 ODX 和 OTX 的技术细节、应用场景、优势与挑战,并进行全面的对比,旨在为汽车行业从业者在选择和应用这两种标准时提供有价值的参

芊言凝语 1637

合肥工业大学操作系统实验8

依据操作系统课程所介绍的地址映射与内存共享的原理,本实验的目的是深入理解物理内存的分页管理方式。 深入理解操作系统的段、页式内存管理。包括理解段表、二级页表,以及逻辑地址、线性地址、 物理地址的映射过程。编程实现段、页式内存管理上的内存共享,从而深入理解操作系统的内存管理。从而加深对教材上地址映射与内存共享的理解。

Martin-share的博客 1721

前端优化:节流

前言: 节流:就是防止多次没有必要的出发,比如监听窗口事件、点击事件等…… 常用实现方式:1.添加loding遮罩;2.时间限制事件触发次数。 备注:只对时间限制方式做介绍 实现代码: // 备注:vue项目中实现 // 激活触发 activated() { window.addEventListener("resize", this.regulating); // 添加窗口监听事件,监听当前窗口变化 } data() { return { timer: null, // 监听节流

轻风细雨_林木木 504

专栏目录:Linux 内存管理子系统的进化——从 MM 到 HMM

专栏梳理了Linux内存管理子系统从经典MM到异构内存管理(HMM)的演进历程。内容分为六大部分:首先介绍经典MM基础,包括虚拟地址空间、页表、VMA等核心机制;其次分析MM通用框架如页表遍历、NUMA迁移等;然后探讨设备内存引入的关键技术,如ZONE_DEVICE和dev_pagemap;接着深入解析HMM核心机制及其与DMA的集成;随后通过多个实际驱动案例展示HMM应用;最后讨论大页支持等进阶主题。专栏采用"经典机制→问题→扩展方案"的三段式结构,帮助开发者理解Linux如何通过HMM实现设备内存管理。

图形/计算GPU的驱动与虚拟化技术分享园地 869

JS | JavaScript函数防抖和节流全解析

防抖和节流本质上是优化高频率执行代码的一种手段,如:浏览器的 resize、scroll、keypress、mousemove 等事件在触发时,会不断地调用绑定在事件上的回调函数,极大地浪费资源,降低前端性能。为了优化体验,需要对这类事件进行调用次数的限制,对此我们就可以采用 防抖(debounce)和 节流(throttle)的方式来减少调用频率。节流——n 秒内只运行一次,若在 n 秒内重复触发,只有一次生效。防抖——n 秒后再执行该事件,若在 n 秒内被重复触发,则重新计时.........

青春木鱼的博客 3213

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Javascript函数防抖与节流的理解以及在vue和原生js中的使用

防抖和节流的目的都是为了减少不必要的计算,不浪费资源,只在适合的时候再进行触发计算。 一、函数防抖(debounce) 1.定义: 事件触发停止一定时间后才会执行响应的函数,期间如果重复调用动作,重新计算时间。类似于,按下一个弹簧,只有你松手的时候弹簧才会弹起。本质上是将多次操作合并为一次操作。可用一个定时器维护,事件触发后wait时间内如果事件重复触发,那么取消当前定时器,重新设置一个时延为wa...

前端李小白的博客 583

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

JavaScript函数防抖与节流

在前端开发中,我们经常需要处理各种高频触发的事件,比如窗口 resize、滚动事件、输入框输入等。如果不对这些事件的处理函数加以限制,频繁的执行会导致性能问题,影响用户体验。函数防抖(Debounce)和节流(Throttle)就是解决这类问题的两种重要技术。 本文将介绍防抖和节流的实现原理、应用场景,并深入解析实现过程中的关键细节。

chanyeol14805的博客 910

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

JavaScript节流函数和防抖函数之间的区别

JavaScript节流函数和防抖函数之间的区别 两者都是优化高频率执行js代码的一种手段 节流函数:指一定时间内js方法只跑一次 防抖函数: 指频繁触发的情况下,只有足够的空闲时间,才执行代码一次 节流函数 var flat = true; window.onscroll = function(){ if(!flat){ // 判断是否已空闲,如果在执行中,则直接return return; } flat = false; setTimeout(function(){ console

sjfsp的博客 213

Javascript防抖函数节流函数的介绍(最详细)、彻底搞懂防抖节流的区别以及使用第三方库的防抖节流函数

什么是防抖节流函数, 我先举个例子给大家 防抖的例子: 比如你给一个女生发消息, 当五分钟内她没有回复, 你就会把她好友删除 如果5分钟内她有回复你, 你回给她回一个消息并且又开始5分钟的等待 如果有等待超过5分钟, 她还没有恢复你消息, 你就会把这个女生的好友删除 节流的例子: 比如有一个男生, 他给女孩子发消息, 在五分钟内不管男生发了多少消息, 女生只会回复一条 回复完之后, 男生在下一个5分钟又发了很多很多消息, 女生还是只回复一条, 每一个五分钟都如此, 女生只回复一条消息 直到有一天男孩死

m0_71485750的博客 1517

JavaScript函数节流和函数防抖之间的区别

一、概念解释 函数节流和函数防抖,两者都是优化高频率执行js代码的一种手段。  大家大概都知道旧款电视机的工作原理,就是一行行得扫描出色彩到屏幕上,然后组成一张张图片。由于肉眼只能分辨出一定频率的变化,当高频率的扫描,人类是感觉不出来的。反而形成一种视觉效果,就是一张图。就像高速旋转的风扇,你看不到扇叶,只看到了一个圆一样。  同理,可以类推到js代码。在一定时间内,代码执行的次数不一定要非常多。...

雷佳佳的博客 1171

JS函数节流和防抖

函数节流和函数防抖的核心就是限制某一个方法被频繁的触发,而一个方法之所以会被频繁触发,大多数情况下是因为 DOM 事件的监听回调,尤其是在事件回调中Ajax与后台进行交互的时候可以大大减轻服务器的压力,而这也是函数节流以及防抖多数情况下的应用场景。

a123456234的博客 824

Javascript面试重点-手写防抖节流函数

我们按照如下思路来实现:1.需要接收什么参数:参数一: 回调的函数参数二: 延迟时间 2.返回值是什么最终我们返回结果是要绑定对应的监听事件的, 所以返回值一定是一个新的函数 3.内部实现我们可以在_debounce函数中开启个定时器, 定时器的延迟时间就使用delay并且每开启一个定时器, 我们都需要将上一次的定时器取消掉 这样防抖的基本实现就已经实现完成, 已经可以实现防抖的效果, 我们可使用上一篇的输入框案例测试一下测试代码帮大家拿过来 完成以上代码, 我们已经实现了防抖函数最核心的一

m0_71485750的博客 3510

【js手写】防抖和节流函数

防抖和节流 1.防抖 1.1 防抖的概念 防抖:当某个事件触发的频率过高时,为了避免不必要的性能开销,我们规定这个事件触发后,需要等待一段时间再执行其绑定的逻辑代码,如果在这一段时间内,该事件没有再次触发,就执行这个事件对应的逻辑,否则就重新进行计时等待,确保该事件不被过于频繁的触发。 比如我们为鼠标的移动绑定一个事件,显然这个事件会被过于频繁的触发,势必会带来很大的开销,甚至影响到UI的渲染,导致页面卡顿。 1.2 实现思路 构建一个debouce函数,这个函数中保存一个timeout变量用于记录设置的

qq_44831027的博客 1499

js函数防抖和函数节流

js函数防抖和函数节流函数 函数防抖(debounce.js):就是指触发事件后在 n 秒内函数只能执行一次,如果在 n 秒内又触发了事件,则会重新计算函数执行时间。 函数节流(throttle.js):就是指连续触发事件但是在 n 秒中只执行一次函数。 debounce.js /** * 函数防抖 * 函数被频繁调用时使用 * 使用方法参考lodash 的 debounce 函数 * @author lzs */ const freeGlobal = typeof global == 'ob

肖帅的博客 381

【JavaScript】防抖、节流和函数柯理化

函数柯理化:作用:把一次传递两个参数,变成两次每次传递一个参数目的:利用闭包,把第一次传递的参数保存下来(延长变量的生命周期)函数防抖:通过setTimeout的方式,在一定的时间间隔内,将多次触发变成一次触发。(通俗的说是在最后一次点击间隔规定时间之后才能再次成功触发,否则触发不成功)节流指的是减少一段时间内的触发频率。只有在上一次成功触发间隔规定时间之后,才能再次触发。节流与防抖的区别是:防抖只在最后一次成功点击之后间隔规定时间之后才能再次成功触发,如果在时间间隔之内就被点击,需要重新间隔时间间隔才能点

浅陌繁星的博客 4379

js知识点之函数防抖和节流

JavaScript中的函数大多数情况下都是由用户主动调用触发的,除非是函数本身的实现不合理,否则一般不会遇到跟性能相关的问题。但是在一些少数情况下,函数的触发不是由用户直接控制的。在这些场景下,函数有可能被非常频繁地调用,而造成大的性能问题。解决性能问题的处理办法就有和。下面是函数被频繁调用的常见的几个场景:mousemove事件:如果要实现一个拖拽功能,需要一路监听mousemove事件,在回调中获取元素当前位置,然后重置DOM的位置来进行样式改变。

fyw1789的博客 951
上一篇: MongoDB安装
下一篇: 关于mine-type
feral_coder
博客等级 码龄9年 19粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值