@ohos.events.emitter (Emitter)
官网上有许多方法,本文只介绍了简单的emitter.emit()和emitter.on() 方法来进行线程间通信
Emitter主要提供线程间发送和处理事件的能力,包括对持续订阅事件或单次订阅事件的处理、取消订阅事件、发送事件到事件队列等。
1. 订阅事件
import { emitter } from '@kit.BasicServicesKit';
import { promptAction } from '@kit.ArkUI';
import { hilog } from '@kit.PerformanceAnalysisKit';
// 定义一个eventId为1的事件
let event: emitter.InnerEvent = {
eventId: 1
};
// 这是收到eventId为1的事件后执行的回调函数
let callback = (eventData: emitter.EventData): void => {
promptAction.showToast({
message: JSON.stringify(eventData)
});
};
// 订阅eventId为1的事件
emitter.on(event, callback);
2. 发送事件
import { emitter } from '@kit.BasicServicesKit';
// 定义一个eventId为1的事件,事件优先级为Low
let event: emitter.InnerEvent = {
eventId: 1,
priority: emitter.EventPriority.LOW
};
let eventData: emitter.EventData = {
data: {
content: 'c',
id: 1,
isEmpty: false
}
};
// 发送eventId为1的事件,事件内容为eventData
emitter.emit(event, eventData);
简化写法:
import { emitter } from '@kit.BasicServicesKit'
// logger是自己封装的log
aboutToAppear(): void {
// 在合适的地方订阅事件,写好到时候需要执行的代码
emitter.on('myEvent', (event) => {
logger.debug('myEvent', JSON.stringify(event.data))
})
}
build{
Column{
Button('触发事件')
.onClick(() => {
// 使用emitter.emit来广播事件,携带信息
emitter.emit('myEvent', {
data: { num: 100 }
})
})
}
}
最后是文章封面~

1356






