Timeout Queue Task

by dzenkovich

JavaScript

var throttle = function(callback, delay){
    var queue = [];
    
    return function(){
        if(queue.length == 0){
            var execute = true;
        }
        if(queue.length < 2){
            queue.push(function(){
                callback();
                
                window.setTimeout(function(){
                    queue.shift();
                    if(queue.length){
                        queue[0]();
                    }
                }, delay);
            });
        }
        
        if(execute){
            queue[0]();
        }
    };
};

var start = Date.now();
var throttled = throttle(function(){
    console.log(Date.now() - start);
}, 1000);

throttled();
window.setTimeout(throttled, 100);
window.setTimeout(throttled, 200);
window.setTimeout(throttled, 300);
window.setTimeout(throttled, 1500);