@tolokoban/tgd
Version:
ToloGameDev library for WebGL2
31 lines • 1.9 kB
JavaScript
/**
* In some asynchronous scenarios, we don't know if a value has been initialized when we need it.
* This class allows you to wait for the value to be defined.
*/
export class TgdValueWaitable {
constructor() {
this._value = undefined;
this.resolvers = [];
}
get value() {
return this._value;
}
set value(v) {
this._value = v;
if (v !== undefined) {
this.resolvers.forEach((resolve) => resolve(v));
this.resolvers = [];
}
}
waitUntiDefined() {
return new Promise((resolve) => {
const { value } = this;
if (value !== undefined) {
resolve(value);
return;
}
this.resolvers.push(resolve);
});
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvdmFsdWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLGdCQUFnQjtJQUE3QjtRQUNTLFdBQU0sR0FBa0IsU0FBUyxDQUFBO1FBQ2pDLGNBQVMsR0FBMkIsRUFBRSxDQUFBO0lBd0IvQyxDQUFDO0lBdEJBLElBQVcsS0FBSztRQUNmLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQTtJQUNuQixDQUFDO0lBRUQsSUFBVyxLQUFLLENBQUMsQ0FBZ0I7UUFDaEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUE7UUFDZixJQUFJLENBQUMsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDL0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUE7UUFDcEIsQ0FBQztJQUNGLENBQUM7SUFFTSxlQUFlO1FBQ3JCLE9BQU8sSUFBSSxPQUFPLENBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNqQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFBO1lBQ3RCLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUN6QixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7Z0JBQ2QsT0FBTTtZQUNQLENBQUM7WUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUM3QixDQUFDLENBQUMsQ0FBQTtJQUNILENBQUM7Q0FDRCJ9