This repository has been archived on 2022-08-19. You can view files and clone it, but cannot push or open issues or pull requests.
hydrogen-web/src/utils/Disposables.js
2020-04-09 23:19:49 +02:00

37 lines
770 B
JavaScript

function disposeValue(value) {
if (typeof d === "function") {
value();
} else {
value.dispose();
}
}
export class Disposables {
constructor() {
this._disposables = [];
}
track(disposable) {
this._disposables.push(disposable);
}
dispose() {
if (this._disposables) {
for (const d of this._disposables) {
disposeValue(d);
}
this._disposables = null;
}
}
disposeTracked(value) {
const idx = this._disposables.indexOf(value);
if (idx !== -1) {
const [foundValue] = this._disposables.splice(idx, 1);
disposeValue(foundValue);
return true;
}
return false;
}
}