import { Task } from './taskbuffer.classes.task.js'; export class BufferRunner { public task: Task; // initialize by default public bufferCounter: number = 0; constructor(taskArg: Task) { this.task = taskArg; } public trigger(x: any): Promise { if (!(this.bufferCounter >= this.task.bufferMax)) { this.bufferCounter++; } const returnPromise: Promise = this.task.cycleCounter.getPromiseForCycle( this.bufferCounter ); if (!this.task.running) { this._run(x); } return returnPromise; } private async _run(x: any) { this.task.running = true; while (this.bufferCounter > 0) { const result = await Task.runTask(this.task, { x: x }); this.bufferCounter--; this.task.cycleCounter.informOfCycle(result); } this.task.running = false; } }