JavaScript節流


節流

節流的解釋:在觸發任務的第一時間執行任務,並且設定定時器,如果在該定時器還未結束的時候還有觸發任務的,也不執行

實現節流的核心是時間間隔,在設定的時間間隔內如果還有同樣的任務進來,則不執行。

那么控制時間間隔的方法有兩個,第一是setTimeout,第二是利用Date日期

// 用setTimeout時間間隔
function throttle(func,delay){
    let timer;
    return function () {
        let context = this;
        let args = arguments;
        if (timer){
            return;
        }
        timer = setTimeout(function (){
            func.apply(context,args)
            timer = null;
        },delay)
    }
}

以上利用了timer控制定時器,如果定時器被定義了,說明有任務正在執行,如果沒有被定義說明可以執行任務。

// 用Date對象
function throttle1(func,delay){
    let pre = 0;
    return function () {
        let context = this;
        let args = arguments
        let now = new Date();
        if (now - pre > delay){
            func.apply(context,args);
            pre = now;
        }
    }
}

以上利用了日期的計算來控制時間,需要判斷的是毫秒數的差,如果小於delay就是在執行時間內,不在就是執行完成。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM