默认不增强事件,避免事件性能开销

This commit is contained in:
YHH
2025-09-26 10:28:00 +08:00
parent cf9ea495d0
commit 5e052a7e7d
2 changed files with 30 additions and 31 deletions

View File

@@ -41,36 +41,36 @@ export class EventBus implements IEventBus {
* 发射事件 * 发射事件
* @param eventType 事件类型 * @param eventType 事件类型
* @param data 事件数据 * @param data 事件数据
* @param enhance 是否增强事件数据添加timestamp、eventId等默认false提升性能
*/ */
public emit<T>(eventType: string, data: T): void { public emit<T>(eventType: string, data: T, enhance: boolean = false): void {
this.validateEventType(eventType); this.validateEventType(eventType);
// 增强事件数据 const finalData = enhance ? this.enhanceEventData(eventType, data) : data;
const enhancedData = this.enhanceEventData(eventType, data);
if (this.isDebugMode) { if (this.isDebugMode) {
EventBus._logger.info(`发射事件: ${eventType}`, enhancedData); EventBus._logger.info(`发射事件: ${eventType}`, finalData);
} }
this.eventSystem.emitSync(eventType, enhancedData); this.eventSystem.emitSync(eventType, finalData);
} }
/** /**
* 异步发射事件 * 异步发射事件
* @param eventType 事件类型 * @param eventType 事件类型
* @param data 事件数据 * @param data 事件数据
* @param enhance 是否增强事件数据添加timestamp、eventId等默认false提升性能
*/ */
public async emitAsync<T>(eventType: string, data: T): Promise<void> { public async emitAsync<T>(eventType: string, data: T, enhance: boolean = false): Promise<void> {
this.validateEventType(eventType); this.validateEventType(eventType);
// 增强事件数据 const finalData = enhance ? this.enhanceEventData(eventType, data) : data;
const enhancedData = this.enhanceEventData(eventType, data);
if (this.isDebugMode) { if (this.isDebugMode) {
EventBus._logger.info(`发射异步事件: ${eventType}`, enhancedData); EventBus._logger.info(`发射异步事件: ${eventType}`, finalData);
} }
await this.eventSystem.emit(eventType, enhancedData); await this.eventSystem.emit(eventType, finalData);
} }
/** /**
@@ -375,16 +375,15 @@ export class EventBus implements IEventBus {
// 私有方法 // 私有方法
/** /**
* 验证事件类型 * 验证事件类型仅在debug模式下执行提升性能
* @param eventType 事件类型 * @param eventType 事件类型
*/ */
private validateEventType(eventType: string): void { private validateEventType(eventType: string): void {
// 只在debug模式下进行验证提升生产环境性能
if (this.isDebugMode) {
if (!EventTypeValidator.isValid(eventType)) { if (!EventTypeValidator.isValid(eventType)) {
if (this.isDebugMode) {
EventBus._logger.warn(`未知事件类型: ${eventType}`); EventBus._logger.warn(`未知事件类型: ${eventType}`);
}
// 在调试模式下添加自定义事件类型 // 在调试模式下添加自定义事件类型
if (this.isDebugMode) {
EventTypeValidator.addCustomType(eventType); EventTypeValidator.addCustomType(eventType);
} }
} }

View File

@@ -273,7 +273,7 @@ describe('EventBus - 事件总线测试', () => {
timestamp: Date.now() timestamp: Date.now()
}; };
eventBus.emitEntityCreated(entityData); eventBus.emit(ECSEventType.ENTITY_CREATED, entityData, true);
expect(receivedData).not.toBeNull(); expect(receivedData).not.toBeNull();
expect(receivedData!.entityId).toBe(1); expect(receivedData!.entityId).toBe(1);
@@ -370,7 +370,7 @@ describe('EventBus - 事件总线测试', () => {
}); });
const originalData = { message: 'test' }; const originalData = { message: 'test' };
eventBus.emit('enhanced:event', originalData); eventBus.emit('enhanced:event', originalData, true);
expect(receivedData.message).toBe('test'); expect(receivedData.message).toBe('test');
expect(receivedData.timestamp).toBeDefined(); expect(receivedData.timestamp).toBeDefined();