JavaScript防抖(王者荣耀回城)、节流(王者荣耀技能读条)

本文通过王者荣耀的回城和妲己一技能为例,介绍了前端开发中防抖(debounce)和节流(throttle)的概念及其应用场景。防抖技术确保了回城操作在多次快速触发后只执行最后一次,而节流则保证了妲己一技能在释放过程中,即使多次点击也只执行首次,避免了无效的资源消耗。这两个技术在优化用户交互体验和控制资源使用上具有重要意义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

防抖(王者荣耀回城)

回城按一次读条八秒钟,回到一半,在按一次回城开始重新读条八秒,多次猛按回城,不回家,开启嘲讽,重复开始读条

<button id="btn"> 回城</button>
var BtnBtn = document.getElementById("btn")
var fu = function () {
    console.log("回城成功")
}
BtnBtn.onclick = function () {
    b()
}
var b = debounce(fu, 8000)
function debounce(fun1, wait) {
    var timer;
    var timer2;
    var i = 0;
    return function () {  //返回一个函数,使用变量接受后执行
         if (timer) { //如存在定时进行清除
            clearTimeout(timer)
            clearTimeout(timer2)
            i=0
        }
        // 防抖功能
        timer = setTimeout(function () {
            fun1();
        }, wait);
        // 回城功能
        timer2 = setInterval(function () {
            ++i;
            if (i == 8) {
                console.log("______")
                clearTimeout(timer2)
                i = 0 //闭包变量,暂用内存一直存在,清零
            } else {
                console.log(i)
            }
        }, 1000)
    }
}


节流(王者荣耀技能读条)

妲己放一技能读条一秒钟,读条期间,多次猛按一技能,只执行第一次,等第一次放的技能放出来之后,再次放技能,再次开始读条

<button id="btn"> 妲己一技能读条</button>
var BtnBtn = document.getElementById("btn")
var fu = function () {
    console.log("打他成功")
}
BtnBtn.onclick = function () {
    q()
}
var q = throttle(fu, 1000)
function throttle(fun, wait) {
    var timer;  //开   timer=undefined
    var timer2;
    var i = 0;
    return function () {
        if (!timer) { //判断timer是否有值(当前是否已经开启了定时器) ,
            timer = setTimeout(function () { //关
                fun();
                timer = undefined; //开
                clearTimeout(timer2)
                i = 0;
            }, wait)
            timer2 = setInterval(function () {
                i += 100;
                console.log(`${i}毫秒`)
            }, 100)
        }else{
            console.log("正在放技能阿,累死了")
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CongJiYong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值