taskbuffer/ts/taskbuffer.classes.cyclecounter.ts

37 lines
1.0 KiB
TypeScript
Raw Normal View History

2022-03-25 11:14:49 +00:00
import * as plugins from './taskbuffer.plugins.js';
import { Task } from './taskbuffer.classes.task.js';
2019-09-23 16:06:43 +00:00
export interface ICycleObject {
cycleCounter: number;
deferred: plugins.smartpromise.Deferred<any>;
}
export class CycleCounter {
public task: Task;
public cycleObjectArray: ICycleObject[] = [];
2023-08-02 00:30:13 +00:00
constructor(taskArg: Task<any>) {
2019-09-23 16:06:43 +00:00
this.task = taskArg;
}
public getPromiseForCycle(cycleCountArg: number) {
const done = plugins.smartpromise.defer();
const cycleObject: ICycleObject = {
cycleCounter: cycleCountArg,
2020-07-12 00:48:51 +00:00
deferred: done,
2019-09-23 16:06:43 +00:00
};
this.cycleObjectArray.push(cycleObject);
return done.promise;
}
2021-09-26 12:45:02 +00:00
public informOfCycle(x: any) {
2019-09-23 16:06:43 +00:00
const newCycleObjectArray: ICycleObject[] = [];
2020-07-12 00:48:51 +00:00
this.cycleObjectArray.forEach((cycleObjectArg) => {
2019-09-23 16:06:43 +00:00
cycleObjectArg.cycleCounter--;
if (cycleObjectArg.cycleCounter <= 0) {
cycleObjectArg.deferred.resolve(x);
} else {
newCycleObjectArray.push(cycleObjectArg);
}
});
this.cycleObjectArray = newCycleObjectArray;
}
}