首页 > 其他分享 >节流和防抖

节流和防抖

时间:2024-03-25 15:11:27浏览次数:28  
标签:事件处理 防抖 节流 触发 事件 执行

节流(throttling)和防抖(debouncing)

一、概念
节流(throttling)和防抖(debouncing)是在处理用户输入和其他事件时常用的两种性能优化技巧。它们的主要目的是控制事件触发的频率,以避免不必要的重复操作,减轻系统负担,提高用户体验。

1.节流(Throttling):

节流是一种限制事件处理函数执行频率的技术,确保事件在一定时间间隔内最多执行一次。
当一个事件被触发,节流会立即执行事件处理函数,并在指定的时间间隔内忽略任何后续触发的相同事件。
适用于需要定期更新的操作,如滚动事件、搜索框输入,确保它们不会太频繁地触发,减轻服务器和客户端的负担。
2. 防抖(Debouncing):

防抖是一种延迟事件处理函数执行的技术,确保事件触发后,在指定的时间内没有更多事件触发时才执行一次事件处理函数。
当一个事件被触发,防抖会等待一段时间,如果在这段时间内没有更多事件触发,那么事件处理函数将被执行。
适用于防止重复提交表单、搜索建议等需要等待用户停止输入的场景。
二、区别
1.触发方式:节流是在一定时间间隔内最多执行一次事件处理函数,而防抖是等待一段时间后执行事件处理函数,如果在等待期间有新的触发事件,等待时间会被重新计时。

2.应用场景:节流适用于需要限制事件频率的场景,确保事件在一定间隔内触发;防抖适用于需要等待用户停止操作后才执行的场景,例如搜索建议、输入框验证。

简而言之:在初始化时,节流会立即执行一次事件处理函数,而防抖不会在初始化时执行。防抖只有在触发事件后,并且在指定的等待时间内没有再次触发事件时才会执行事件处理函数。这是两者之间的关键区别。

三、实际运用
1. 滚动事件处理:

节流:用于限制滚动事件处理的频率,以减少滚动事件的处理次数,从而提高性能。
防抖:用于延迟执行滚动事件处理,以确保用户完成滚动操作后再触发相关操作,例如加载更多数据。
2. 窗口大小调整事件:

节流:用于在窗口大小不断调整时,限制事件处理的频率,以避免过多的重绘操作。
防抖:用于确保只有在用户停止调整窗口大小后才执行相应的调整操作。
3. 搜索框自动完成:

防抖:用于在用户输入搜索关键字时,延迟执行自动完成搜索操作,以减少请求次数,降低服务器负担。
4. 表单输入验证:

防抖:用于在用户输入表单字段时,延迟进行验证操作,以减少验证请求的频率。
5. 按钮点击事件:

节流:用于限制按钮点击事件的频率,以避免用户多次点击导致的重复操作。
6. 实时聊天:

防抖:用于实时聊天应用中,延迟发送用户输入的消息,以减少网络请求和提高性能。
7. 轮播图切换:

节流:用于限制轮播图切换的频率,以提高用户体验,防止用户快速切换图片。
8. 鼠标移动事件:

节流:用于限制鼠标移动事件的频率,以减少处理次数,提高性能。

标签:事件处理,防抖,节流,触发,事件,执行
From: https://www.cnblogs.com/m-zone/p/18094412

相关文章

  • 字节流读取数据
    importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;publicclassMain{publicstaticvoidmain(String[]args)throwsIOException{FileInputStreamfileInputStream=new......
  • 详细解读JavaScript中的防抖(debounce)和节流(throttle)!!!
    在JavaScript中,防抖(debounce)和节流(throttle)是两种常用的技术,用于限制函数的执行频率,特别是在处理高频事件(如窗口的resize、scroll,输入框的keyup、mousedown等)时非常有用。防抖(debounce)防抖的基本思想是将多次执行变为最后一次执行。也就是说,在事件被触发后n秒内函数只能执......
  • 分享一个之前开发的react键盘事件的快捷键实现,组合键,支持防抖和节流,通过自定义hooks实
    npm包地址:linkgithub地址:linkreact-khooksGettingStarted......
  • js面试(节流)
    一、节流在JavaScript中,节流(throttle)是一种常用的性能优化技术,用于限制某个函数在一定时间内的执行频率。具体来说,节流函数允许你在一段时间内只执行一次回调函数,即使在这段时间内触发了多次事件。这有助于防止因为频繁触发事件而导致的性能问题。节流的实现原理是,在事件被触发......
  • js面试(防抖)
    一、什么是防抖防抖(Debounce)是一种用于减少特定事件触发频率的技术。在编程中,它通常用于确保函数或方法不会在很短的时间内被频繁调用,这有助于优化性能并避免不必要的计算或操作。防抖的实现原理是,在事件被触发后,一个定时器会被设置。如果在定时器完成之前,相同的事件再次被触发,......
  • 节流方式实现,发送验证码
    <!DOCTYPEhtml><html><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><metahttp-equiv="X-UA-Compatible"content=&q......
  • 前端防抖-通过自定义指令实现
    前端防抖-通过自定义指令实现1、通过自定义事件实现前端防抖Vue.directive('preventReClick',{inserted(el,binding){el.addEventListener('click',()=>{if(!el.disabled){el.disabled=truesetTimeout(()=>......
  • tsx格式防抖
    定义:import{useCallback,useEffect,useRef}from'react';exportinterfaceDebounceRefType{fn:Function;timer?:NodeJS.Timeout;}exporttypeDebouncePropsType=[Function,number,any[]?];constuseDebounce=(...[fn,debounce,dep......
  • 在JavaScript中的防抖函数 - 通过在React中构建自动完成功能来解释
    当你将一个新应用推向生产环境时,你希望确保它用户友好。网站的性能是用户体验的关键部分。每个用户都希望网站及其内容能够快速加载。每一秒都是宝贵的,可能导致用户再也不会访问你的网站。在本指南中,我们将了解JavaScript中一个非常重要的技术,即防抖函数。然后,我将向您展示如何在......
  • 防抖与节流
    防抖与节流的本质就是:通过闭包特性减少操作次数举一个现实生活中的例子//两个大巴的故事//防抖,//A大巴:车上上去一个人,五分钟之内不上人,发车。//节流。//B大巴:车上上去一个人之后,五分钟之后发车。//发车!网络请求(A=>B)提高利用率减少B的压力。//......