简单实现防抖和节流

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

        prevent:null,//防抖
        canUse:true,//节流
        userName:'前',
        add:0

在这里插入图片描述

// 防抖

    fangdou(){
            if(this.prevent){
                //清除痕迹
            clearTimeout(this.prevent)
        }
        
            this.prevent = setTimeout(()=>{
            this.prevent=null
            //3秒后赋值
            this.userName = '触发后'
        },3000)

    },
    //节流
    jieliu(){
        if(this.canUse){
            this.add++
         //触发技能后,关闭开关
            this.canUse = false
         //在3秒后打开开关
            setTimeout(()=>this.canUse = true, 3000)
        }

    }
JavaScript中的防抖(Debounce)和节流(Throttle)是处理函数频繁触发导致性能问题的常见技巧,它们的区别在于: - **防抖(Debounce)**:当一个事件连续触发多次时,只有在最后一次触发后的一段时间内如果没有再次触发,才会执行回调函数。这是为了防止短期内连续的操作堆积在一起,只执行一次。 - **节流(Throttle)**:无论事件触发多少次,都会保证在一定时间间隔内只执行一次回调。这有助于限制函数执行频率,比如滚动事件,确保不会因为快速滚动而过于频繁地执行处理滚动的函数。 以下是简单防抖节流实现: ```javascript // 防抖实现 (Debounce) function debounce(func, delay) { let timeoutId; return function() { const context = this; const args = arguments; clearTimeout(timeoutId); timeoutId = setTimeout(() => func.apply(context, args), delay); }; } // 节流实现 (Throttle) function throttle(func, delay) { let lastExec = Date.now(); return function() { const context = this; const args = arguments; if (Date.now() - lastExec >= delay) { func.apply(context, args); lastExec = Date.now(); } }; } ``` 你可以像这样使用它们: ```javascript const throttledFunction = throttle(function toBeLimited() { console.log('This function is throttled'); }, 500); // 每隔500毫秒执行一次 const debouncedFunction = debounce(function toBeDebounced() { console.log('This function is debounced'); }, 300); // 只在最后一次触发后300毫秒内执行 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值