diff --git a/packages/designer/src/designer/designer.ts b/packages/designer/src/designer/designer.ts index b665ed1f6..12d9bc112 100644 --- a/packages/designer/src/designer/designer.ts +++ b/packages/designer/src/designer/designer.ts @@ -403,7 +403,8 @@ export class Designer { // 合并assets let assets = this.editor.get('assets'); let newAssets = megreAssets(assets, incrementalAssets); - this.editor.set('assets', newAssets); + // 对于 assets 存在需要二次网络下载的过程,必须 await 等待结束之后,再进行事件触发 + await this.editor.set('assets', newAssets); } // TODO: 因为涉及修改 prototype.view,之后在 renderer 里修改了 vc 的 view 获取逻辑后,可删除 this.refreshComponentMetasMap(); diff --git a/packages/editor-core/src/editor.ts b/packages/editor-core/src/editor.ts index bda15aa8f..bc46086f6 100644 --- a/packages/editor-core/src/editor.ts +++ b/packages/editor-core/src/editor.ts @@ -76,10 +76,9 @@ export class Editor extends (EventEmitter as any) implements IEditor { return this.context.has(keyOrType); } - set(key: KeyType, data: any): void { + set(key: KeyType, data: any): void | Promise { if (key === 'assets') { - this.setAssets(data); - return; + return this.setAssets(data); } // store the data to engineConfig while invoking editor.set() if (!keyBlacklist.includes(key as string)) { diff --git a/packages/types/src/editor.ts b/packages/types/src/editor.ts index 6d917ec47..7db0a5990 100644 --- a/packages/types/src/editor.ts +++ b/packages/types/src/editor.ts @@ -40,7 +40,7 @@ export interface IEditor extends StrictEventEmitter boolean; - set: (key: KeyType, data: any) => void; + set: (key: KeyType, data: any) => void | Promise; onceGot: (keyOrType: KeyOrType) => Promise>;