防抖节流函数实现

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <p>点我获取时间戳(防抖)</p>
    <div style="width: 100px;height:100px;background-color: aqua;">鼠标放上来随机改变数字(节流)</div>
    <script>
        let p = document.querySelector('p');
        let div = document.querySelector('div')

        /** 
         * 防抖
         *  fn ===> 要执行的函数
         *  delay ==> 延迟的毫秒数
         * */
        function debounce(fn, delay) {
            // 定时器
            let timer;
            return function () {
                clearTimeout(timer)
                timer = setTimeout(function () {
                    fn.apply(this, arguments)
                }, delay)
            }
        }
        p.addEventListener('click', debounce(function (e) {
            console.log(this)
            let date = new Date().getTime()
            p.innerHTML = date;
        }, 1000))

        /**  
         *   节流
         *   fn ===> 要执行的函数
         *   delay ==> 延迟的毫秒数
         * */
        function throttle(fn, delay) {
            let run = true
            return function () {
                if (!run) {
                    return
                }
                run = false
                setTimeout(function () {
                    fn.apply(this, arguments)
                    run = true
                }, delay)
            }
        }
        div.addEventListener('mousemove', throttle(function (e) {
            div.innerHTML = Math.random();
        }, 1000))
    </script>
</body>

</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值