queue.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. function Queue(asStack){
  2. Object.defineProperties(
  3. this,
  4. {
  5. add:{
  6. enumerable:true,
  7. writable:false,
  8. value:addToQueue
  9. },
  10. next:{
  11. enumerable:true,
  12. writable:false,
  13. value:run
  14. },
  15. clear:{
  16. enumerable:true,
  17. writable:false,
  18. value:clearQueue
  19. },
  20. contents:{
  21. enumerable:false,
  22. get:getQueue,
  23. set:setQueue
  24. },
  25. autoRun:{
  26. enumerable:true,
  27. writable:true,
  28. value:true
  29. },
  30. stop:{
  31. enumerable:true,
  32. writable:true,
  33. value:false
  34. }
  35. }
  36. );
  37. var queue=[];
  38. var running=false;
  39. var stop=false;
  40. function clearQueue(){
  41. queue=[];
  42. return queue;
  43. }
  44. function getQueue(){
  45. return queue;
  46. }
  47. function setQueue(val){
  48. queue=val;
  49. return queue;
  50. }
  51. function addToQueue(){
  52. for(var i in arguments){
  53. queue.push(arguments[i]);
  54. }
  55. if(!running && !this.stop && this.autoRun){
  56. this.next();
  57. }
  58. }
  59. function run(){
  60. running=true;
  61. if(queue.length<1 || this.stop){
  62. running=false;
  63. return;
  64. }
  65. queue.shift().bind(this)();
  66. }
  67. }
  68. module.exports=Queue;