防抖、节流 我会带着你远行 2023-07-12 03:34 39阅读 0赞 ### 原生js中 ### 简单实现: function a() { console.log('触发了!!!') } // 节流: 规定的时间内,只能触发一次; // 一般用于:点击抢票、秒杀按钮 function throttle(fn, delay) { let firstTime = Date.now() return function () { let lastTime = Date.now() let args = [...arguments] if(lastTime-firstTime >= delay) { fn(...args) firstTime = Date.now() } } } // 防抖:在规定的时间内,触发多个的话,会清除每一次的定时器,直到在规定的时间内没有触发 // 函数才会执行!一般用于用户滚动、浏览器窗口大小变化。 function debounce(fn, time) { let timer = null; return function () { clearInterval(timer) let args = [...arguments] timer = setTimeout(() => { fn(...args) }, time) } } addEventListener('resize', debounce(a, 1000)) ## ## ### 防抖 - debounce ### <template> <div @mousemove="move"> { {text}} </div> </template> <script> export default { data() { return {timer: null} }, methods: { move() { this.debounce(this.run, 1000) }, run() { this.text ++ }, debounce(fn, timing) { clearTimeout(this.timer) console.log(this.timer) this.timer = setTimeout(fn, timing) } } } </script> **第一次执行****debounce函数****的时候,timer为null,**执行clearTimeout(this.timer)时,可以忽略,接着看到setTimeout,会把回调函数放到事件队列中去,1秒钟之后会执行,并且产生一个唯一标识 timer。 **接着如果在这1秒钟之内,又执行了debounce函数,也就是第二次执行:** 看到clearTimeout(this.timer),它会把上一次的timer标识清除掉(也就是把上一次在事件队列中的函数清除),然后在接着执行setTimeout,还是会把回调函数放到事件队列中去,等待1秒钟之后执行,并且再次产生一个唯一标识 timer,依次类推··· ··· 如果,在规定的时间内**debounce函数**只触发了一次,那么就正常执行。 **下边是没加 clearTimeout(this.timer) 效果:** ![20200306172345494.gif][] 加了**clearTimeout(this.timer) 的效果:** ![20200306182039458.gif][] [20200306172345494.gif]: https://img-blog.csdnimg.cn/20200306172345494.gif [20200306182039458.gif]: https://img-blog.csdnimg.cn/20200306182039458.gif
相关 防抖、节流 原生js中 简单实现: function a() { console.log('触发了!!!') } // 节流: 规定的时间内 我会带着你远行/ 2023年07月12日 03:34/ 0 赞/ 40 阅读
相关 防抖节流 故心故心故心故心小故冲啊 -------------------- 文章目录 防抖 节流 总结 -------------------- 防抖 r囧r小猫/ 2023年01月12日 11:36/ 0 赞/ 161 阅读
相关 javascript 防抖、节流 一、防抖 > 防抖——触发高频事件后 n 秒后函数只会执行一次,如果 n 秒内高频事件再 次被触发,则重新计算时间; 1. 原理 短时间内多次触发同一事件 左手的ㄟ右手/ 2022年12月18日 15:56/ 0 赞/ 163 阅读
相关 防抖节流 防抖(debounce) 从滚动条监听的例子说起 先说一个常见的功能,很多网站会提供这么一个按钮:用于返回顶部。这个按钮只会在滚动到距离顶部一定位置之后才出现,那么我们 叁歲伎倆/ 2022年11月14日 14:41/ 0 赞/ 226 阅读
相关 防抖、节流 防抖:只要用户触发事件,清除定时器,重新开始记时,避免全局污染,选择使用闭包实现效果。 节流:让用户在一段时间之内,只能执行一次。 判断当前的tag,tag是true允许执 ╰半橙微兮°/ 2022年09月14日 09:23/ 0 赞/ 220 阅读
相关 防抖和节流 1. 防抖 触发高频事件后n秒内函数只会执行一次,如果n秒内高频事件再次被触发,则重新计算时间 \ 思路:每次触发事件时都取消之前的延时调用方法 function 朱雀/ 2022年03月18日 01:44/ 0 赞/ 315 阅读
相关 节流、防抖 节流和防抖主要处理事件处理函数高频调用,减少浏览器负担 节流:尽量减少触发次数,mint-ui上封装了一个方法 <script> var t 向右看齐/ 2022年01月30日 00:39/ 0 赞/ 350 阅读
相关 防抖和节流 防抖和节流 一、什么是防抖 二、防抖使用场景 1.输入框是按键触发请求时 三、什么是节流 四、节流的使用场景 1.鼠标连续 快来打我*/ 2021年09月07日 06:13/ 0 赞/ 495 阅读
相关 防抖节流 通过闭包返回的函数来进行操作,使得变量一直存在 防抖: ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shado 不念不忘少年蓝@/ 2021年07月24日 23:49/ 0 赞/ 465 阅读
相关 防抖节流 vue代码 防抖 // timer用于储存定时器 delayed(){ // 检测定时器 if(this.timer){ 妖狐艹你老母/ 2021年07月24日 18:39/ 0 赞/ 484 阅读
还没有评论,来说两句吧...