@hazae41/box
Version:
Rust-like Box and similar objects for TypeScript
61 lines (58 loc) • 1.33 kB
JavaScript
;
/**
* A reference that will be disposed after some delay
*/
class Tick {
value;
delay;
#timeout;
/**
* A reference that will be disposed after some delay
* @param value
* @param delay
*/
constructor(value, delay = 0) {
this.value = value;
this.delay = delay;
this.#timeout = setTimeout(() => this.value[Symbol.dispose](), delay);
}
[Symbol.dispose]() {
clearTimeout(this.#timeout);
}
async [Symbol.asyncDispose]() {
this[Symbol.dispose]();
}
get() {
return this.value;
}
}
/**
* A reference that will be disposed after some delay
*/
class AsyncTick {
value;
delay;
#timeout;
/**
* A reference that will be disposed after some delay
* @param value
* @param delay
*/
constructor(value, delay = 0) {
this.value = value;
this.delay = delay;
this.#timeout = setTimeout(() => this.value[Symbol.asyncDispose]().then(undefined, console.error), delay);
}
[Symbol.dispose]() {
clearTimeout(this.#timeout);
}
async [Symbol.asyncDispose]() {
this[Symbol.dispose]();
}
get() {
return this.value;
}
}
exports.AsyncTick = AsyncTick;
exports.Tick = Tick;
//# sourceMappingURL=index.cjs.map