防抖节流(立即执行/非立即执行)


 

下面的两个都是立即执行版:

// debounce 防抖
        function debounce (fn,immediate) {
            var timer;
            return function() {
                if(timer)  clearTimeout(timer);
                immediate && !timer && fn();  // 首次进入,立即执行(立即执行开启,定时器没开启)
                timer = setTimeout(() => {
                    timer = null;
                }, 1000)
            }
        }

        // throttling 节流
        function throttling(fn,immediate) {
            var timer;
            return function () {
                if (timer) return false;
                !timer && immediate && fn();
                timer = setTimeout(() => {
                    timer = null;
                }, 1000)
            }
        }

        document.getElementById("btn").onclick = throttling(function () {
            console.log(1)
        },true)

总结: 可以发现防抖节流的区别在于  一开始的判断定时器存在所做的处理,防抖是清除定时器重新来,节流是 return false 等待定时器自动清除。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM