防抖節流(立即執行/非立即執行)


 

下面的兩個都是立即執行版:

// 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