diff --git a/examples/demo/src/services/TooltipHelper.ts b/examples/demo/src/services/TooltipHelper.ts index 07389759..1d15d4a9 100644 --- a/examples/demo/src/services/TooltipHelper.ts +++ b/examples/demo/src/services/TooltipHelper.ts @@ -16,6 +16,7 @@ class TooltipHelper { private static _instance: TooltipHelper; private tooltips: Record = {}; private initialized = false; + private initialization?: Promise; static getInstance(): TooltipHelper { if (!TooltipHelper._instance) { @@ -24,20 +25,25 @@ class TooltipHelper { return TooltipHelper._instance; } - async init(): Promise { + init(): Promise { if (this.initialized) { - return; + return Promise.resolve(); } - try { - const response = await fetch(TOOLTIP_URL); - if (response.ok) { - const json = await response.json(); - this.tooltips = json as Record; - } - } catch { - // Tooltips are non-critical; silently ignore failures + if (!this.initialization) { + this.initialization = (async () => { + try { + const response = await fetch(TOOLTIP_URL); + if (!response.ok) return; + this.tooltips = (await response.json()) as Record; + this.initialized = true; + } catch { + // Tooltips are non-critical; silently ignore failures and allow a retry. + } + })().finally(() => { + this.initialization = undefined; + }); } - this.initialized = true; + return this.initialization; } getTooltip(key: string): TooltipData | undefined {