1. 程式人生 > >兩種防止js重複執行的方法

兩種防止js重複執行的方法

其一:

 function test(){
        console.log(0);
    }
    
    function throttle(fun){
        if(fun.timeoutId) {window.clearTimeout(fun.timeoutId);}
        fun.timeoutId = window.setTimeout(function(){
            fun();
           fun.timeoutId = null;
        }, 1000);
    }
    
    throttle(test);
    throttle(test);
    throttle(test);
    throttle(test);

其二:
//禁用按鈕
$('button').prop('disabled',true);
//回撥函式啟用按鈕
$('button').prop('disabled',false);
如果想要最後一次點選生效,把timer定時器放在函式外每次呼叫進行檢測;如果不涉及定時器,就在函式內部把函式賦值給自己讓每次呼叫都執行新的邏輯

var timer;
var foo = function() {
    timer && clearTimeout(timer);
    timer = setTimeout(function() {
        console.log(0);
    }, 5000);
    //something
}