UNPKG

@hazae41/box

Version:

Rust-like Box and similar objects for TypeScript

58 lines (56 loc) 1.29 kB
/** * 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; } } export { AsyncTick, Tick }; //# sourceMappingURL=index.mjs.map