You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
export class Lazy<T> { |
|
#value?: T; |
|
#resolver: () => Promise<T>; |
|
|
|
constructor(resolver: () => Promise<T>) { |
|
this.#resolver = resolver; |
|
} |
|
|
|
async value(): Promise<T> { |
|
if (!this.#value) { |
|
this.#value = await this.#resolver(); |
|
} |
|
|
|
return this.#value; |
|
} |
|
} |