深入理解函数防抖节流

js 函数防抖(debounce)与节流(throttle) 一、函数防抖 二、函数节流 阅读详情
  1. 写在前面:防抖(debounce)节流(throttle)这两个单词千万别写错,工作当中好多人自己封装的函数都写反了。

  2. 防抖debounce: 在事件被触发n秒后再执行回调函数,如果在这n秒内又被触发,则重新计时。
    2-1. 实例(1) 用户在输入框中连续输入一串字符后,只会在输入完后去执行最后一次的查询ajax请求,这样可以有效减少请求次数,节约请求资源;实例(1) 用户在输入框中连续输入一串字符后,只会在输入完后去执行最后一次的查询ajax请求,这样可以有效减少请求次数,节约请求资源;
    (2) window的resize、scroll事件,不断地调整浏览器的窗口大小、或者滚动时会触发对应事件,防抖让其只触发一次;

  3. 简单实现代码:
    3-1.

var debounce = function(idle, action){
   	var last
	 return function(){
   		var ctx = this, args = arguments
  	 	clearTimeout(last)
  	 	last = setTimeout(function(){
       	action.apply(ctx, args)
 	  }, idle)
 	}
}

3-2. es6写法
3-2-1.

export const debounce = (fn, delay) => {
 let timer = null;
 return (params) => {
   clearTimeout(timer);
   timer = setTimeout(() => {
     fn(params);
   }, delay);
 };
};
  1. 节流throttle:规定一个单位时间,在这个单位时间内,只能有一次触发事件的回调函数执行,如果在同一个单位时间内某事件被触发多次,只有一次能生效。
    4-1. 实例:(1)鼠标连续不断地触发某事件(如点击),只在单位时间内只触发一次;
    (2)在页面的无限加载场景下,需要用户在滚动页面时,每隔一段时间发一次 ajax 请求,而不是在用户停下滚动页面操作时才去请求数据;
    (3)监听滚动事件,比如是否滑到底部自动加载更多,用throttle来判断;
  2. 简单实现代码:
    5-1.
var throttle = function(delay, action){
 var last = 0;
 return function(){
   var curr = +new Date()
   if (curr - last > delay){
     action.apply(this, arguments)
     last = curr 
   }
 }
}

5-2. es6写法
5-2-1.

export const throttle = (fn, delay) => {
 let last = 0;
 return (params) => {
   const curr = +new Date();
   if (curr - last > delay) {
     fn(params);
     last = curr;
   }
 };
};
【进阶 6-6 期】深入篇 | 阿里 P6 必会 Lodash 防抖节流函数实现原理 引言 前面几节我们学习了节流函数 throttle,防抖函数 debounce,以及各自如何在 React 项目中进行应用,今天这篇文章主要聊聊 Lodash 中防抖和节流函数是如何实现的,并对源码浅析一二。下篇文章会举几个小例子为切入点,换种方式继续解读源码,敬请期待。 有什么想法或者意见都可以在评论区留言,欢迎大家拍砖。 防抖函数 debounce Lodash 中节流函数比较简单,直接调用防... 阅读详情

相关推荐

单端反激电源的RCD钳位电路吸收设计

反激电源尖峰电压和特点: 反激开关电源主要适用于中小功率<100W的电源设计中,特点是电路简单、成本低、可靠性高、宽稳压范围、转换效率PF高。但是由于本身变压器的漏感和其他参数的影响,变压器在高速开关关断瞬间会产生很大的尖峰电压,截止时产生的尖峰电压是由电路中的储能元件释放的电流引起的突变,过高的尖峰电压会影响开关管的正常工作,需要对尖峰电压采取措施抑制尖峰电压。 如上图所示,尖峰电压的钳位抑制方式有很多种。 TVS成本偏高,属于硬件导通,元件的可靠性较差,在低电压工作效果不理想。 RCD回路吸收

qq_31687191的博客 8489

防抖与节流

防抖与节流 防抖(Debounce)和节流(Throttle)都是用来控制某个函数在一定时间内触发次数,两者都是为了减少触发频率,以便提高性能以及避免资源浪费 节流是第一个说了算,后续都会被节流阀屏蔽掉,防抖是最后一个说了算,前面启用的都会被清除 1. 防抖函数 防抖就是指触发事件后在 n 秒内函数只能执行一次,如果在 n 秒内又触发了事件,则会重新计算函数执行时间 <input type="text"> <script> // 防抖 事件触发 n 秒后执行一次, 如果在 n 秒

langmanboy的博客 2820

CoaXPress协议入门(1)---- CXP测试套件

CoaXPress (简称CXP)是指一种采用同轴线缆进行互联的相机数据传输标准,主要用于替代之前的Camera Link协议,常见于科学相机、工业相机、医学图像、航空防务等场景。CXP是一个非对称的高速点对点串行传输协议,主要用于传输视频和静态图像,线缆多使用单条或多条同轴电缆。CXP易于集成,可以获得灵活可靠的性能,通过使用标准的同轴线缆,比如RG59 和 RG6规格(推荐使用RG6),并且图像、控制通讯、触发、电源都可以使用同一条线缆。

素手挽剑 9515

Debounce&&Throttle

防抖(Debounce)和节流(throttle)都是用来控制某个函数在一定时间内执行多少次的技巧,两者相似而又不同。 实际上对于window的resize事件,实际需求大多为停止改变大小n毫秒后执行后续处理;而其他事件大多的需求是以一定的频率执行后续处理。针对这两种需求就出现了debounce和throttle两种解决办法 debounce:把触发非常频繁的事件(比如按键)合并成一次执行。

u010552788的专栏 419

深入解析Mifare Classic Crypto1认证流程与密钥交换机制

本文深入解析Mifare Classic Crypto1认证流程与密钥交换机制,详细介绍了Crypto1加密算法的工作原理、认证初始化阶段、随机数交换与密钥流生成过程,以及双向验证步骤。文章还分析了Mifare Classic的安全漏洞,包括随机数生成缺陷和密钥流恢复攻击,并提供了Proxmark3实战演示和防护建议。

c6d7e8f9g的博客 898

Docker一键部署Synopsys EDA全家桶(VCS/Verdi 2018版)保姆级教程

本文提供了一份详尽的Docker容器化部署Synopsys EDA工具链(VCS/Verdi 2018版)的保姆级教程。通过环境隔离与标准化,解决传统安装的依赖冲突问题,并重点攻克了容器内GUI图形界面显示的核心难题。教程涵盖从Docker基础安装、镜像获取、容器启动配置,到使用X11转发或VNC实现Verdi完美显示的完整实践,旨在帮助芯片设计工程师快速构建稳定、可移植的一键化EDA工作环境。

weixin_29281941的博客 198

在vue中使用节流和防抖函数

在vue中使用节流和防抖函数 防抖(debounce) 如果短时间内大量触发同一事件,只会执行一次函数 /* * 防抖 * fn [function] 需要防抖的函数 * delay [number] 毫秒,防抖期限值 * eg. getCouponMethod: debounce(function() {}, 1000) */ export const debounce = (fn, delay) =>{ let timer = null //借助闭包 return function() {

heerey525 913

MID360+fastlio功能笔记

前言。

qq_35598561的博客 5301

防抖与节流的理解

防抖与节流的理解 一、防抖 1、定义:规定函数至少间隔多久执行,在n秒内再次被触发,则重新计时,在规定的时间内多次被执行,只会执行一次(可以理解防抖是将多次执行变为最后一次执行) 2、作用:防止事件触发太频繁,浏览器来不及处理,导致页面出现卡顿 3、 适用的场景: 按钮提交时候:多次提交按钮的,可以实现只执行最后一次提交事件 搜索框搜索事件,当多次输入时,等输入后再一次性触发搜索事件 4、例子:例如在搜索时候,等用户全部输入后,再调用搜索事件,不是每一次输入一个字符就触发搜索事件; 5、实现: 利用闭

Smile_666666的博客 683

【YOLOv11改进 - 特征融合】DySample :超轻量级且高效的动态上采样器

【YOLOv11改进 - 特征融合】DySample :超轻量级且高效的动态上采样器

专注于图像领域,主要研究内容包括计算机视觉和深度学习,特别是在图像分类、目标检测和图像生成等方面有深入的研究和实践经验。 1071

基于Vision Transformer的鸟类图像分类(200个类别)完整代码+数据

基于Vision Transformer的鸟类图像分类(200个类别)完整代码+数据

1727

深入理解函数节流与函数防抖

在人生的第一个面试,第一个问题就是面试官问项目遇到的难点以及怎么解决的。我说了自己是如何处理函数节流,结果说的并不是很满意。所以,我决定重新总结一下函数节流与防抖。 深入理解概念 throttle-函数节流:我们希望函数在以一个可以接受的频率重复调用,从而减少函数的执行频率提高网页性能。 debounce-函数防抖:我们希望函数只会调用一次,即使在这之前反复调用它,最终也只调用一次。 下面我们来看...

weixin_33967071的博客 249

YOLOv13改进策略【Head】| 引入RT-DETR中的RTDETRDecoder,替换检测头

本文记录的是基于RTDETRDecoder模块的YOLOv13目标检测改进方法研究。RT-DETR的模块通过,能为解码器提供高质量的初始,从而。相比v13原始的检测头,RT-DETR能,替换后能够更好的提高模型性能。

Limiiiing的博客 434

深入理解防抖和节流函数

// 防抖函数 function debounce(fn, delay) { let timer = null return () => { clearTimeout(timer) timer = setTimeout(()=>{ fn() }, delay) } } 实现思路如下,将目标方法(动作)包...

weixin_30469895的博客 290

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

函数防抖与函数节流:深入理解与应用

函数防抖的主要思想是,如果一个事件被频繁触发,那么只在最后一次触发后的一定时间间隔内执行一次事件处理函数。也就是说,如果事件在设定的时间间隔内被连续触发,那么处理函数只会在最后一次触发后等待设定的时间间隔结束后再执行。防抖和节流的应用场景非常广泛。例如,用户在一个输入框中连续按下键盘,防抖的处理方式是,只有在最后一次按键后等待一段时间(如500毫秒)后,才执行对应的处理函数。例如,用户在输入框中连续按下键盘,节流的处理方式是,每500毫秒只执行一次处理函数,无论在这500毫秒内有多少次按键事件。

xichji的专栏 376

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

深入理解javascript函数进阶系列第三篇——函数节流和函数防抖

前面的话   javascript中的函数大多数情况下都是由用户主动调用触发的,除非是函数本身的实现不合理,否则一般不会遇到跟性能相关的问题。但在一些少数情况下,函数的触发不是由用户直接控制的。在这些场景下,函数有可能被非常频繁地调用,而造成大的性能问题。解决性能问题的处理办法就是函数节流和函数防抖。本文将详细介绍函数节流和函数防抖 常见场景   下面是函数被频繁调用的常见的几个场景 ...

weixin_33800593的博客 131

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

防抖和节流函数的实现

防抖和节流函数的实现 首先我们需要对防抖和节流函数作一个概念的区别:因为这两者是不同的一个概念 一、防抖和节流函数的基本认识 1.防抖函数 防抖函数相当于是对触发的数据做一个延迟处理。比如我们平时在使用搜索框时,我们一输入内容就会发送对应的网络请求,如果我们后面一直有在输入内容,那么就会一直发送网络请求。正确的做法应该是在我们输入期间不发送网络请求,当我们输入完成后在发送网络请求。 2.节流函数 节流函数相当于是我们在一个时间段内一直频繁的触发数据请求,但是数据的请求还是根据设定的一个频率来进行响应的。比

qq_39908328的博客 1万+

useCallback以及useMemo结合 节流防抖初体验

前言: 首先让我解释一下什么是节流和防抖 一、防抖(debounce):触发高频事件后 n 秒内函数只会执行一次,如果 n 秒内高频事件再次被触发,则重新计算时间 举例:就好像在百度搜索时,每次输入之后都有联想词弹出,这个控制联想词的方法就不可能是输入框内容一改变就触发的,他一定是当你结束输入一段时间之后才会触发。 二、节流(thorttle):高频事件触发,但在 n 秒内只会执行一次,所以节流会稀释函数的执行频率 举例:预定一个函数只有在大于等于执行周期时才执行,周期内调用不执行。就好像你在淘宝抢购某一件

weixin_42440314的博客 1736

防抖(debounce)和节流(throttle)区别详细讲解及案例练习

防抖(debounce)和节流(throttle)区别详细讲解及案例练习

背心的博客 2219

理解一下防抖和节流

引言 防抖和节流是针对响应跟不上触发频率这类问题的两种解决方案。 一. 防抖 1.1 防抖是啥 比如你写的input的onchange事件,用来搜索服务器的相关内容,每次改变一点input里的内容浏览器都会去服务器索要东西,其实浏览器想要的只是最终你输入的结果而已。防抖的目的就是想要你输入的最后一次结果。 1.2 手写防抖 1.2.1基础版 只要0.5秒之内没输入,就执行业务逻辑,执行完一次业务逻辑之后,时间计时器清空,从新开始。 let inp = document.querySelecter("in

少昊的博客 536

函数节流、函数防抖【实践】

实践后加深的理解 共性: 函数节流 什么是函数节流? 需要频繁触发的函数,在规定时间内(绝对时间差),只让第一次生效,后面的不生效。 有什么特点?(函数执行后,lastTime才被重新赋值) 一个时间差内被续触发,一定会执行一次。 多个时间差内连续触发,最终执行多次。 有什么使用场景? 滚动条事件的监听 。。。(尴尬,博主经验较少,大家理解了按需使用就行,哈哈)。 函数防抖 什么是函数...

清心 407

JavaScript中的节流与防抖函数记不住?我的答案保你终身难忘【一小时搞懂,建议收藏】

防抖和节流严格算起来应该属于性能优化的知识,但实际上遇到的频率相当高,处理不当或者放任不管就容易引起浏览器卡死。赶紧学习学习。here we go!

weixin_56134381的博客 2874

一杯茶的时间,带你学会聊天室源码中的防抖节流

☀️ 前言 在聊天室源码开发过程中,很多人分不清防抖和节流。其实防抖和节流可以在聊天室源码中起到性能优化的作用,所以还是很有必要掌握的。接下来我就用一杯茶的时间带大家彻底学会手写防抖和节流。 ???? 防抖 ???? 举个例子 我们先抛开概念不谈,其实在生活中也有很多防抖的例子: 比如你现在使用的电脑,在不使用后一段时间自动休眠 当你再次使用的时候重新激活,并开始你设置的时间倒计时10分钟 在这10分钟内你继续使用电脑又会重新开始倒计时10分钟 当你最后一次使用电脑并离开时重新倒计时10分钟过去了

m0_58374018的博客 137

【跟着大佬学JavaScript】之lodash防抖节流合并

【跟着大佬学JavaScript】之lodash防抖节流合并

易函123 780

函数防抖,函数节流,函数珂里化

相同点: 一个高频触发的函数,规定的时间内,函数防抖和函数节流都是用来对函数的调用做降频(降低单位时间内被调用的次数)处理的。 不同点: 函数防抖是执行最后一次事件,如下:点赞事件是最后一次点赞后三秒后打印输出,不论之前点击事件是否超过三秒,规定的时间是提供最后一次事件调用的时间。 函数节流是执行最先触发的事件,后面的不执行...

smallliumang的博客 263
上一篇: 微信公众号获取用户头像
下一篇: 从输入 URL到用户看到页面都经历了哪些
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值