import {PromiseQueue} from "./PromiseQueue"; export class MultiQueue { private readonly queues:PromiseQueue[]; /** * * @param concurrentTask */ constructor( concurrentTask:number=1, ) { if (concurrentTask<1){ throw new Error("concurrentTask must be >=1"); } this.queues = []; for(let i=0;i()); } } public getQueueSize(): number { let ret = 0; for(let queue of this.queues){ ret+=queue.getQueueSize(); } return ret; } public async awaitQueueEmpty(){ for(let queue of this.queues){ await queue.awaitQueueEmpty(); } } /** * Add a task to the queue. The queue with the smallest task size is used * @param task * @param id **/ public add(task: () => Promise, id: string = null): { id: string, promise: Promise } { let queue = this.queues[0]; for(let i=1;i