分分钟把握---节流与防抖?

153 阅读1分钟

节流

快速点击按钮,无论你点多快,结果都以固定频率输出,降低打印频率。

实现思路:

先将节流阀(flag)打开,当发生鼠标点击事件之后,判断节流阀的状态,然后立马关闭节流阀,再设置一个定时器,让节流阀以固定时间(频率)打开。

来看代码实现

<button>点我</button>
    <script>
        var btn = document.querySelector('button')
        var flag = true
        btn.onclick = function () {
            if (flag) {
                flag = false
                console.log('fasongqingqiu')
​
                setTimeout(() => {
                    flag = true
                }, 1000);
            }
        }
    </script>

防抖

快速点击按钮,无论你点多快,只会打印一次

实现思路:

先清除掉上一个定时器内容,然后开启新的定时器,需要注意的是,这里需要提前准备一个全局变量timer,以实现clearTimeout的首次清除

来看代码实现

<button>点我</button>
    <script>
        var btn = document.querySelector('button')
        var timer = null
        btn.onclick = function () {
            clearTimeout(timer)
​
            timer = setTimeout(() => {
                console.log('发送请求了')
            }, 1000);
        }
    </script>

思维导图

节流与防抖.bmp