js高频发事件的处理:防抖、节流

(先设置一个点击的盒子)

<style>
        .mydiv {
            width: 100px;
            height: 100px;
            background-color: rgb(233, 131, 131);
        }
    </style>
</head>

<body>
    <div class="mydiv"></div>
</body>
  

防抖:
防抖思想:如果高频法,设置一个定时器,如果在这个时间内如果再次触发事件,
就清除前一次事件的时间,以后面一次的时间再重新计时,直到在定时器设置的时间内没有再触发事件,那么定时器才会执行事件。
(如果一直触发,就不会执行,只要等到指定时间内没有再触发事件了,才会执行)

    let mydiv = document.querySelector('.mydiv');
    mydiv.addEventListener('mousemove', move(fn,500))

    function move(f,time) {
        let tid=0;
        return function(){
            if(tid){
                clearTimeout(tid)
            }

            tid=setTimeout(function(){
            f()
        },time)   
        }
        
    }
    function fn() {
        console.log('1')
    }

节流
节流思想:如果高频发,那么在规定时间内,就只会执行一次。
(如果一直触发,那么在规定的时间内,只会执行一次,不管触发多少次,规定时间只会执行一次)

       let mydiv = document.querySelector('.mydiv');
        mydiv.addEventListener('mousemove', move(fn, 1000))

        function move(f, time) {
            let working = false;

            return function () {
                if (working) {
                    return;
                }
                working=true;
                setTimeout(function () {
                    f()
                    working=false;
                }, time)
            }
        }
        function fn() {
            console.log('鼠标滑动')
        }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值