mirror of
https://github.com/Tencent/tmagic-editor.git
synced 2025-09-22 14:59:59 +08:00
fix(editor): getTMagicApp中对runtime-ready可能存在多次事件监听
This commit is contained in:
parent
1f7ad2fbb8
commit
444858491d
@ -215,6 +215,8 @@ export const initServiceEvents = (
|
||||
((event: 'update:modelValue', value: MApp | null) => void),
|
||||
{ editorService, codeBlockService, dataSourceService, depService }: Services,
|
||||
) => {
|
||||
let getTMagicAppPrimise: Promise<TMagicCore | undefined> | null = null;
|
||||
|
||||
const getTMagicApp = (): Promise<TMagicCore | undefined> => {
|
||||
const renderer = editorService.get('stage')?.renderer;
|
||||
if (!renderer) {
|
||||
@ -225,19 +227,25 @@ export const initServiceEvents = (
|
||||
return Promise.resolve(renderer.runtime.getApp?.());
|
||||
}
|
||||
|
||||
return new Promise<TMagicCore | undefined>((resolve) => {
|
||||
if (getTMagicAppPrimise) {
|
||||
return getTMagicAppPrimise;
|
||||
}
|
||||
|
||||
getTMagicAppPrimise = new Promise<TMagicCore | undefined>((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[]) => {
|
||||
|
Loading…
x
Reference in New Issue
Block a user