复习之防抖与节流

debounce(防抖)的特点是当事件快速连续不断触发时,动作只会执行一次

节流(throttle)函数不管事件触发有多频繁,每隔一个时间周期就会执行一次事件处理程序

 

防抖简单实现

<input name="username" type="text" oninput="checkUsername(this)">
<script>
    var handler;
    function checkUsername(it) {
        clearTimeout(handler);
        handler = setTimeout(() => {
            // TODO
        }, 1000)
    }
</script>

可以仔细分析一下,这几行代码是不是上面的方案一。

如果在1000毫秒内,反复执行checkUsername函数,那么setTimeout就会被反复清除,并且反复设置一个新的1000毫秒的定时任务。直到你执行checkUsername的前后两次间隔超过1000毫秒,定时任务才有机会执行一次。

 
posted @ 2021-08-21 14:11  JSkolo_yyds  阅读(27)  评论(0编辑  收藏  举报