You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							76 lines
						
					
					
						
							1.5 KiB
						
					
					
				
			
		
		
	
	
							76 lines
						
					
					
						
							1.5 KiB
						
					
					
				function Queue(asStack){ | 
						|
    Object.defineProperties( | 
						|
        this, | 
						|
        { | 
						|
            add:{ | 
						|
                enumerable:true, | 
						|
                writable:false, | 
						|
                value:addToQueue | 
						|
            }, | 
						|
            next:{ | 
						|
                enumerable:true, | 
						|
                writable:false, | 
						|
                value:run | 
						|
            }, | 
						|
            clear:{ | 
						|
                enumerable:true, | 
						|
                writable:false, | 
						|
                value:clearQueue | 
						|
            }, | 
						|
            contents:{ | 
						|
                enumerable:false, | 
						|
                get:getQueue, | 
						|
                set:setQueue | 
						|
            }, | 
						|
            autoRun:{ | 
						|
                enumerable:true, | 
						|
                writable:true, | 
						|
                value:true | 
						|
            }, | 
						|
            stop:{ | 
						|
                enumerable:true, | 
						|
                writable:true, | 
						|
                value:false | 
						|
            } | 
						|
        } | 
						|
    ); | 
						|
 | 
						|
    var queue=[]; | 
						|
    var running=false; | 
						|
    var stop=false; | 
						|
 | 
						|
    function clearQueue(){ | 
						|
        queue=[]; | 
						|
        return queue; | 
						|
    } | 
						|
 | 
						|
    function getQueue(){ | 
						|
        return queue; | 
						|
    } | 
						|
 | 
						|
    function setQueue(val){ | 
						|
        queue=val; | 
						|
        return queue; | 
						|
    } | 
						|
 | 
						|
    function addToQueue(){ | 
						|
        for(var i in arguments){ | 
						|
            queue.push(arguments[i]); | 
						|
        } | 
						|
        if(!running && !this.stop && this.autoRun){ | 
						|
            this.next(); | 
						|
        } | 
						|
    } | 
						|
 | 
						|
    function run(){ | 
						|
        running=true; | 
						|
        if(queue.length<1 || this.stop){ | 
						|
            running=false; | 
						|
            return; | 
						|
        } | 
						|
 | 
						|
        queue.shift().bind(this)(); | 
						|
    } | 
						|
} | 
						|
 | 
						|
module.exports=Queue;
 | 
						|
 |