123456789101112131415161718192021222324 |
- /**
- * Limit Queue
- * The first element will be removed when the length exceeds the limit
- */
- export class LimitQueue<T> extends Array<T> {
- __limit;
- __onExceed? : (item : T | undefined) => void;
- constructor(limit: number) {
- super();
- this.__limit = limit;
- }
- pushItem(value : T) {
- super.push(value);
- if (this.length > this.__limit) {
- const item = this.shift();
- if (this.__onExceed) {
- this.__onExceed(item);
- }
- }
- }
- }
|