Spaces:
Sleeping
Sleeping
| function Queue(){ | |
| 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)(); | |
| } | |
| } | |