feat(event): add event.prependListener api

This commit is contained in:
liujuping 2023-08-16 11:34:56 +08:00 committed by 林熠
parent 942972c593
commit f7c1f1e716
4 changed files with 42 additions and 0 deletions

View File

@ -25,6 +25,19 @@ on(event: string, listener: (...args: any[]) => void): IPublicTypeDisposable;
```
相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts)
### prependListener
监听事件,会在其他回调函数之前执行
```typescript
/**
* 监听事件,会在其他回调函数之前执行
* @param event 事件名称
* @param listener 事件回调
*/
prependListener(event: string, listener: (...args: any[]) => void): IPublicTypeDisposable;
```
相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts)
### off
取消监听事件

View File

@ -55,6 +55,14 @@ export class EventBus implements IEventBus {
};
}
prependListener(event: string, listener: (...args: any[]) => void): () => void {
this.eventEmitter.prependListener(event, listener);
this.getLogger().debug(`${this.getMsgPrefix('prependListener')} ${event}`);
return () => {
this.off(event, listener);
};
}
/**
*
* @param event

View File

@ -36,6 +36,20 @@ export class Event implements IPublicApiEvent {
}
}
/**
*
* @param event
* @param listener
*/
prependListener(event: string, listener: (...args: any[]) => void): IPublicTypeDisposable {
if (isPluginEventName(event)) {
return this[eventBusSymbol].prependListener(event, listener);
} else {
logger.warn(`fail to prependListener event ${event}, event should have a prefix like 'somePrefix:eventName'`);
return () => {};
}
}
/**
*
* @param event

View File

@ -10,6 +10,13 @@ export interface IPublicApiEvent {
*/
on(event: string, listener: (...args: any[]) => void): IPublicTypeDisposable;
/**
*
* add monitor to a event
* @param event
* @param listener
*/
prependListener(event: string, listener: (...args: any[]) => void): IPublicTypeDisposable;
/**
*