UNPKG

@fto-consult/common

Version:

Un ensemble de bibliothèques et d'utilistaires communs pour le développement d'applications javascript

96 lines (89 loc) 2.33 kB
// Copyright 2022 @fto-consult/Boris Fouomene. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. export default function Queue(asStack){ let queue=[]; let running=false; Object.defineProperties( this, { add:{ enumerable:true, writable:false, value:addToQueue }, queue : { enumerable:true, writable:false, value : queue, }, run:{ enumerable:true, writable:false, value:run }, 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 }, isRunning:{ enumerable:true, writable:true, value: x=> running, }, stop:{ enumerable:true, writable:true, value:false } } ); function clearQueue(){ for(let i in queue){ delete queue[i]; } return queue; } function getQueue(){ return queue; } function setQueue(val){ queue=val; return queue; } function addToQueue(){ Array.prototype.slice.call(arguments,0).map((cb)=>{ if(typeof cb =='function'){ queue.push(cb); } }); if(!running && !this.stop && this.autoRun){ this.next(); } } function run(){ running=true; if(queue.length<1 || false && this.stop){ running=false; return; } queue.shift()(); running = false; } }