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

节流和防抖

时间:2024-04-15 15:59:21浏览次数:30  
标签:触发 防抖 节流 debounce args timer

这个防抖和节流吧,老是记住了之后,过段时间后,又忘记了!然后请教大佬,到底怎么记住呢!好好好,现在这个防抖,治疗帕金森,刻烟吸肺了。

1. 防抖debounce

防抖:debounce,不会立马执行的,触发后,过一段时间执行,如果在时间到达之前又触发了,那重新等待。 常用于比如我们下拉框关键字输入远程搜索,如果不做防抖,那用户一边输入关键字,搜索的请求会立马发起,在完整输入一串关键字的过程中,可能会触发多次查询,但这是无意义的,浪费资源。
 1 function debounce(fn,wait){
 2   let timer;
 3   return function(){
 4       // 每次触发都清空之前的,然后重新等待执行
 5       if(timer){
 6           clearTimeout(timer)
 7       }
 8       let _this = this;
 9       let args = arguments;
10       timer = setTimeout(()=>{
11           fn.apply(_this,args)
12     },wait)    
13   }    
14 }    
15 // 以拖动窗口为例,一直拖动窗口,不会一直打印resize,只有在你停下来后,等待2s才会打印
16 window.onresize = debounce(()=>{console.log('resize')},2000)

2. 节流throttle

节流:  throttle,触发后,过一段时间执行,即使在等待过程中,再次触发,会忽略掉。
 1 function throttle(fn,wait){
 2      let timer;
 3      return function(...args){
 4         
 5          if(timer){
 6              return
 7          }
 8          timer = setTimeout(()=>{
 9             fn(...args)
10             clearTimeout(timer)
11          },wait)
12      }
13  }    

 

标签:触发,防抖,节流,debounce,args,timer
From: https://www.cnblogs.com/grow-up-up/p/17877486.html

相关文章

  • js函数防抖
    functiondedounce(fn,duration){lettimeId;//此处的this指向windowsreturnfunction(){//此处的this指向调用函数的对象constthat=this;if(timeId){clearTimeout(timeId);}//这个地方的......
  • 手写防抖节流
    防抖持续频繁触发某个机制,则需要等待指定的时间再执行。/**手写防抖*用法:函数在n秒后再执行,如果n秒内被触发,重新计时,保证最后一次触发事件n秒后才执行。*思路:*1、保存一个变量timer*2、返回一个闭包函数函数内判断一下timer是否有值*2.1、如果有......
  • javascript常见100问|前端基础知识|问ajax-fetch-axios-区别请用 XMLHttpRequestfetch
    00-开始前端基础知识HTMLCSSJSHTTP等基础知识是前端面试的第一步,基础知识不过关将直接被拒。本章将通过多个面试题,讲解前端常考的基础知识面试题,同时复习一些重要的知识点。为何要考察扎实的前端基础知识,是作为前端工程师的根本。基础知识能保证最基本的使用,即招聘......
  • 字节流和字符流综合练习
    字节流和字符流的使用场景字节流:拷贝任意类型的文件字符流:读取纯文本文件的数据;往纯文本文件中写出数据练习1:拷贝需求:拷贝一个文件夹,考虑子文件夹packagea03test;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.......
  • react防抖节流
    防抖importReact,{useState,useEffect}from'react';constDebounceExample=()=>{const[inputValue,setInputValue]=useState('');useEffect(()=>{constdelay=1000;//设置防抖延迟时间为1秒consttimer=setTimeou......
  • 节流和防抖
    节流(throttling)和防抖(debouncing)一、概念节流(throttling)和防抖(debouncing)是在处理用户输入和其他事件时常用的两种性能优化技巧。它们的主要目的是控制事件触发的频率,以避免不必要的重复操作,减轻系统负担,提高用户体验。1.节流(Throttling):节流是一种限制事件处理函数执行频率的技......
  • 字节流读取数据
    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)是一种常用的性能优化技术,用于限制某个函数在一定时间内的执行频率。具体来说,节流函数允许你在一段时间内只执行一次回调函数,即使在这段时间内触发了多次事件。这有助于防止因为频繁触发事件而导致的性能问题。节流的实现原理是,在事件被触发......