refactor(core): 调整eventHelper代码

This commit is contained in:
roymondchen 2026-01-12 20:17:47 +08:00
parent 5110f0cbca
commit e6e68ae69a
2 changed files with 26 additions and 16 deletions

View File

@ -197,17 +197,7 @@ class App extends EventEmitter {
app: this, app: this,
}); });
if (this.eventHelper) { this.eventHelper?.initEvents();
this.eventHelper.removeNodeEvents();
for (const [, node] of this.page.nodes) {
this.eventHelper.bindNodeEvents(node);
}
for (const [, page] of this.pageFragments) {
for (const [, node] of page.nodes) {
this.eventHelper.bindNodeEvents(node);
}
}
}
super.emit('page-change', this.page); super.emit('page-change', this.page);
} }
@ -254,7 +244,7 @@ class App extends EventEmitter {
node.data?.id && node.data?.id &&
node.eventKeys.has(`${String(name)}_${node.data.id}`) node.eventKeys.has(`${String(name)}_${node.data.id}`)
) { ) {
return this.eventHelper?.emit(node.eventKeys.get(`${String(name)}_${node.data.id}`)!, node, ...otherArgs); return this.eventHelper.emit(node.eventKeys.get(`${String(name)}_${node.data.id}`)!, node, ...otherArgs);
} }
return super.emit(name, ...args); return super.emit(name, ...args);
} }
@ -265,8 +255,12 @@ class App extends EventEmitter {
* @returns void * @returns void
*/ */
public async runCode(codeId: Id, params: Record<string, any>, args: any[], flowState?: FlowState, node?: Node) { public async runCode(codeId: Id, params: Record<string, any>, args: any[], flowState?: FlowState, node?: Node) {
if (!codeId || isEmpty(this.codeDsl)) return; if (!codeId || isEmpty(this.codeDsl)) {
return;
}
const content = this.codeDsl?.[codeId]?.content; const content = this.codeDsl?.[codeId]?.content;
if (typeof content === 'function') { if (typeof content === 'function') {
try { try {
await content({ app: this, params, eventParams: args, flowState, node }); await content({ app: this, params, eventParams: args, flowState, node });

View File

@ -82,6 +82,22 @@ export default class EventHelper extends EventEmitter {
this.dataSourceEventList.clear(); this.dataSourceEventList.clear();
} }
public initEvents() {
this.removeNodeEvents();
if (this.app.page) {
for (const [, node] of this.app.page.nodes) {
this.bindNodeEvents(node);
}
}
for (const [, page] of this.app.pageFragments) {
for (const [, node] of page.nodes) {
this.bindNodeEvents(node);
}
}
}
public bindNodeEvents(node: TMagicNode) { public bindNodeEvents(node: TMagicNode) {
node.events?.forEach((event, index) => { node.events?.forEach((event, index) => {
if (!event.name) { if (!event.name) {
@ -301,11 +317,11 @@ export default class EventHelper extends EventEmitter {
return; return;
} }
const instanceMethodPropmise = []; const instanceMethodPromise = [];
for (const node of toNodes) { for (const node of toNodes) {
if (node.instance) { if (node.instance) {
if (typeof node.instance[methodName] === 'function') { if (typeof node.instance[methodName] === 'function') {
instanceMethodPropmise.push(node.instance[methodName](fromCpt, ...args)); instanceMethodPromise.push(node.instance[methodName](fromCpt, ...args));
} }
} else { } else {
node.addEventToQueue({ node.addEventToQueue({
@ -316,6 +332,6 @@ export default class EventHelper extends EventEmitter {
} }
} }
await Promise.all(instanceMethodPropmise); await Promise.all(instanceMethodPromise);
} }
} }