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.
74 lines
1.6 KiB
74 lines
1.6 KiB
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)(); |
|
} |
|
}
|
|
|