防抖和节流 快来打我* 2021-09-07 06:13 516阅读 0赞 ### 防抖和节流 ### * 一、什么是防抖 * 二、防抖使用场景 * * 1.输入框是按键触发请求时 * 三、什么是节流 * 四、节流的使用场景 * * 1.鼠标连续点击触发事件 * 2.懒加载时要监听计算滚动条的位置 * 五、节流阀的概念 * 六、防抖和节流的区别 # 一、什么是防抖 # 防抖是当事件被触发后,延迟n秒后再执行回调,如果再这n秒内事件又被触发,则重新计时,等于游戏中的回城。 # 二、防抖使用场景 # ## 1.输入框是按键触发请求时 ## 用户连续输入一串字符时,可以通过防抖策略,只在输入完后,才执行查询的请求,这样可以有效减少请求次数,节约请求资源, 代码: var time = null //定义一个要发生的数据 getdata(data){ //data是发送的数据 //发送请求 } //防抖的timer //定义防抖的函数,调用这个函数后,会设置一个定时器 //request是发送请求的函数。 function fn(keword,request){ //keword是你要传递的参数 //request是你发送请求的函数名 //开启定时器后,会返回一个定时器的id,可以接受这个id,清除的时候也是根据这个id来清除的。 time = setTimeout({ //发送请求 request(keword) },500) } input.keyup = function(){ clearTimeout(timer) fn(keywords,getdata) //keywords是用户输入的值 } //给输入框绑定事件 //按键抬起后触发, 先清除定时器, 缓存你的输入 1.定义一个全局的缓存对象 var cacheobg = \{\} 2.将搜索结果保存到缓存对象中 function fn2(data){ var a = input.value //获取输入的内容当中键 cacheobg [a] = res //把结果和键名对应。 //这样用户输入到这个内容时,就会对应到这个数据 //然后显示出来。 //这样就可以不用发送请求。直接获得数据。 } # 三、什么是节流 # 节流就是减小一段实际内事件的触发频率,按下之后,后续的按下或输入都不会再执行,只能触发第一次的事件,必须等第一件事执行完后,才能执行下一次的事件。 //vue中的场景,time是data里的变量 cleartime(){ //第一步是清除定时器, clearTimeout(this.time) //第二部要把存定时器的值清空,不然还存着定时器的那个id this.time = null }, //请求函数 getdata(){ //如果定时器存在,则退出函数 if(this.time){ return } //不存在就创建一个定时器 this.time = setTimeout(()=>{ //用箭头函数this是vue //不用箭头函数,this是window //执行你的逻辑。 //之后执行清空定时器函数在上面 this.cleartime() },3000) } 自行封装可以更简便 # 四、节流的使用场景 # ## 1.鼠标连续点击触发事件 ## 只在单位时间内触发一次。 ## 2.懒加载时要监听计算滚动条的位置 ## 但不必每次滑动都触发,可以降低计算的频率,而不必浪费cpu资源 # 五、节流阀的概念 # 节流阀为空,表示可以执行下次操作, 不为空,就不能执行下次操作。 当前操作执行完,必须将节流阀重置为空,表示可以执行下次操作。 每次执行前,必须先判断节流阀是否为空,不为空就直接return出去。 即就是防抖的代码不是去除定时器,而是判断定时器,存在就不会执行了,不存在定时器就会执行后面的代码。 # 六、防抖和节流的区别 # 防抖:事件被频繁的触发,防抖能保证只有最后一次触发生效,前面n多次的触发都会被忽略, 节流:如果事件被频繁触发,节流能够减少事件触发的频率,因此,节流是有选择性的执行一部分事件
相关 防抖和节流 前端开发的过程中,我们经常会需要绑定一些持续触发的事件,如 resize、scroll、mousemove 等等,但有些时候我们并不希望在事件持续触发的过程中那么频繁地去... 梦里梦外;/ 2024年04月18日 21:02/ 0 赞/ 94 阅读
相关 防抖和节流 防抖:debounce(不停滑动鼠标时,数字不会累加,当停止滑动,1000ms之后数字才会累加) let num = 1; let div= docu 秒速五厘米/ 2023年07月17日 02:55/ 0 赞/ 40 阅读
相关 防抖和节流 之前代码: 滑动右侧A-Z导航条 handlerTouchMove(e) { if (this.touchStatus) { 怼烎@/ 2023年02月23日 03:58/ 0 赞/ 38 阅读
相关 防抖和节流 防抖 是为了防止频繁触发的操作,在指定时间内我们让用户的行为只触发一次在第一次点击时/最后一次点击时(只能识别一次) function debounce( 约定不等于承诺〃/ 2023年01月08日 02:06/ 0 赞/ 169 阅读
相关 防抖和节流 防抖(debounce):当持续触发事件时,保证只执行最后一次事件处理函数 > 在给DOM绑定事件时,有些事件我们是无法控制触发频率的。 如鼠标移动事件onmousemo àì夳堔傛蜴生んèń/ 2022年11月05日 08:32/ 0 赞/ 222 阅读
相关 防抖和节流 防抖 所谓防抖,就是指触发事件后在 n 秒内函数只能执行一次,如果在 n 秒内又触发了事件,则会重新计算函数执行时间。 触发高频事件后n秒内函数只会执行一次,如果n秒 待我称王封你为后i/ 2022年08月30日 11:37/ 0 赞/ 239 阅读
相关 防抖和节流 1. 防抖 触发高频事件后n秒内函数只会执行一次,如果n秒内高频事件再次被触发,则重新计算时间 \ 思路:每次触发事件时都取消之前的延时调用方法 function 朱雀/ 2022年03月18日 01:44/ 0 赞/ 331 阅读
相关 节流、防抖 节流和防抖主要处理事件处理函数高频调用,减少浏览器负担 节流:尽量减少触发次数,mint-ui上封装了一个方法 <script> var t 向右看齐/ 2022年01月30日 00:39/ 0 赞/ 361 阅读
相关 防抖和节流 防抖和节流 一、什么是防抖 二、防抖使用场景 1.输入框是按键触发请求时 三、什么是节流 四、节流的使用场景 1.鼠标连续 快来打我*/ 2021年09月07日 06:13/ 0 赞/ 517 阅读
相关 防抖节流 vue代码 防抖 // timer用于储存定时器 delayed(){ // 检测定时器 if(this.timer){ 妖狐艹你老母/ 2021年07月24日 18:39/ 0 赞/ 501 阅读
还没有评论,来说两句吧...