diff --git a/packages/editor/src/initService.ts b/packages/editor/src/initService.ts index a7fea7e8..ddbdad9b 100644 --- a/packages/editor/src/initService.ts +++ b/packages/editor/src/initService.ts @@ -215,6 +215,8 @@ export const initServiceEvents = ( ((event: 'update:modelValue', value: MApp | null) => void), { editorService, codeBlockService, dataSourceService, depService }: Services, ) => { + let getTMagicAppPrimise: Promise | null = null; + const getTMagicApp = (): Promise => { const renderer = editorService.get('stage')?.renderer; if (!renderer) { @@ -225,19 +227,25 @@ export const initServiceEvents = ( return Promise.resolve(renderer.runtime.getApp?.()); } - return new Promise((resolve) => { + if (getTMagicAppPrimise) { + return getTMagicAppPrimise; + } + + getTMagicAppPrimise = new Promise((resolve) => { // 设置 10s 超时 const timeout = globalThis.setTimeout(() => { resolve(void 0); }, 10000); - renderer.on('runtime-ready', () => { + renderer.once('runtime-ready', () => { if (timeout) { globalThis.clearTimeout(timeout); } resolve(renderer.runtime?.getApp?.()); }); }); + + return getTMagicAppPrimise; }; const updateStageNodes = (nodes: MComponent[]) => {