本文原创发布在华为开发者社区,更多鸿蒙场景化示例请见华为开发者联盟官网“行业实践与常见问题”专题页。
介绍
本示例使用'@ohos.events.emitter'模块,实现了在同一进程不同线程间通信的能力,包括单次订阅事件、取消订阅事件,以及发送信息能力。
效果预览

使用说明
- 启动应用后输入框内输入要发送的信息;
- 点击'Send Message to B'按钮发送,下方会更新输入框内容;
- 点击'Unsub'按钮取消订阅,再次发送信息接收不到。
实现思路
-
emitterSub(eventId: number, eventCallback: Callback<emitter.EventData>) 这个函数用于订阅一个特定的事件。当该事件被触发时,会调用传入的回调函数。
-
emitterSend(eventId: number, eventParam: string)这个函数用于发送一个特定的事件,并附带一些数据。
-
emitterShut(eventId: number)这个函数用于取消对某个事件的订阅。
export function emitterSub(eventId: number, eventCallback: Callback<emitter.EventData>) {
let event: emitter.InnerEvent = {
eventId: eventId
}
emitter.on(event, eventCallback)
}
export function emitterSend(eventId: number, eventParam: string) {
let event: emitter.InnerEvent = {
eventId: eventId
}
let eventData: emitter.EventData = {
data: {
param: eventParam
}
};
emitter.emit(event, eventData)
}
export function emitterShut(eventId: number) {
emitter.off(eventId)
}