Skip to content

Commit f7c1f1e

Browse files
liujupingJackLian
authored andcommitted
feat(event): add event.prependListener api
1 parent 942972c commit f7c1f1e

File tree

4 files changed

+42
-0
lines changed

4 files changed

+42
-0
lines changed

docs/docs/api/event.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,19 @@ on(event: string, listener: (...args: any[]) => void): IPublicTypeDisposable;
2525
```
2626
相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts)
2727

28+
### prependListener
29+
监听事件,会在其他回调函数之前执行
30+
31+
```typescript
32+
/**
33+
* 监听事件,会在其他回调函数之前执行
34+
* @param event 事件名称
35+
* @param listener 事件回调
36+
*/
37+
prependListener(event: string, listener: (...args: any[]) => void): IPublicTypeDisposable;
38+
```
39+
相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts)
40+
2841
### off
2942
取消监听事件
3043

packages/editor-core/src/event-bus.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,14 @@ export class EventBus implements IEventBus {
5555
};
5656
}
5757

58+
prependListener(event: string, listener: (...args: any[]) => void): () => void {
59+
this.eventEmitter.prependListener(event, listener);
60+
this.getLogger().debug(`${this.getMsgPrefix('prependListener')} ${event}`);
61+
return () => {
62+
this.off(event, listener);
63+
};
64+
}
65+
5866
/**
5967
* 取消监听事件
6068
* @param event 事件名称

packages/shell/src/api/event.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,20 @@ export class Event implements IPublicApiEvent {
3636
}
3737
}
3838

39+
/**
40+
* 监听事件,会在其他回调函数之前执行
41+
* @param event 事件名称
42+
* @param listener 事件回调
43+
*/
44+
prependListener(event: string, listener: (...args: any[]) => void): IPublicTypeDisposable {
45+
if (isPluginEventName(event)) {
46+
return this[eventBusSymbol].prependListener(event, listener);
47+
} else {
48+
logger.warn(`fail to prependListener event ${event}, event should have a prefix like 'somePrefix:eventName'`);
49+
return () => {};
50+
}
51+
}
52+
3953
/**
4054
* 取消监听事件
4155
* @param event 事件名称

packages/types/src/shell/api/event.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,13 @@ export interface IPublicApiEvent {
1010
*/
1111
on(event: string, listener: (...args: any[]) => void): IPublicTypeDisposable;
1212

13+
/**
14+
* 监听事件,会在其他回调函数之前执行
15+
* add monitor to a event
16+
* @param event 事件名称
17+
* @param listener 事件回调
18+
*/
19+
prependListener(event: string, listener: (...args: any[]) => void): IPublicTypeDisposable;
1320

1421
/**
1522
* 取消监听事件

0 commit comments

Comments
 (0)