HarmonyOS 鸿蒙Next EmitterData我在接收端如何解析?
我发送的emitter代码如下:
let eventData: emitter.EventData = {
data: {
isHot: false,
NewsID: this.videoPlayerModel.videoData.NewsID
}
};
emitter.emit(EventKeys.EVENT_CHANGE_HOT, eventData)
我在接收端如何解析这个eventData呢? 接收端代码:
let callback = (eventData: emitter.EventData): void => {
eventData.data
LogUtils.info('event callback:' + JSON.stringify(eventData));
};
emitter.on(EventKeys.EVENT_CHANGE_HOT,callback)
打印出来是:event callback:{“data”:{“isHot”:false,“NewsID”:102097848}} 请问下最简单的解析方法是什么?
更多关于HarmonyOS 鸿蒙Next EmitterData我在接收端如何解析?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
@ohos.events.emitter (Emitter)-进程线程通信-ArkTS API-Basic Services Kit(基础服务)-基础功能-系统 - 华为HarmonyOS开发者
和如下demo获取到eventdata中的数据
import emitter from '@ohos.events.emitter'
function registerEvent() { // 定义一个eventId为1的事件 let event: emitter.InnerEvent = { eventId: 1 }; // 收到eventId为1的事件后执行该回调 let callback = (eventData: emitter.EventData) => { let content: emitter.EventData = eventData[“content”] let id: emitter.EventData = eventData[“id”] let isEmpty: emitter.EventData = eventData[“isEmpty”] console.info(‘event callback content=’ + content); }; // 订阅eventId为1的事件 emitter.on(event, callback); }
function sendEvent() { // 定义一个eventId为1的事件,事件优先级为Low let event: emitter.InnerEvent = { eventId: 1, priority: emitter.EventPriority.LOW }; let data = new Map<string, Object>(); data.set(“content”, “c”); data.set(“id”, 1); data.set(“isEmpty”, false); let eventData: emitter.EventData = { data }; // 发送eventId为1的事件,事件内容为eventData emitter.emit(event, eventData); }
@Entry @Component struct Index { @State message: string = ‘Hello World’
build() { Row() { Column() { Text(“发送”).fontSize(50).fontWeight(FontWeight.Bold).onClick(() => { sendEvent(); }) Text(“注册”).fontSize(50).fontWeight(FontWeight.Bold).onClick(() => { registerEvent(); }) }.width(‘100%’) }.height(‘100%’) } }
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>
参考如下demo,可获取boolean类型的数值:
import emitter from ‘@ohos.events.emitter’
function registerEvent() { // 定义一个eventId为1的事件
let event: emitter.InnerEvent = { eventId: 1 };
// 收到eventId为1的事件后执行该回调
let callback = (eventData: emitter.EventData) => {
<span class="hljs-keyword">let</span> res = eventData.data <span class="hljs-keyword">let</span> content: string = res?.content <span class="hljs-keyword">let</span> id: number = res?.id <span class="hljs-keyword">let</span> isEmpty: boolean = res?.isEmpty console.info(<span class="hljs-string">'event callback content='</span> + <span class="hljs-built_in">JSON</span>.stringify(eventData)) console.info(<span class="hljs-string">'isEmpty'</span> + isEmpty + <span class="hljs-string">'typeof isEmpty'</span> + <span class="hljs-keyword">typeof</span> isEmpty) isEmpty
};
// 订阅eventId为1的事件
emitter.on(event, callback); }
function sendEvent() { // 定义一个eventId为1的事件,事件优先级为Low
let event: emitter.InnerEvent = { eventId: 1, priority: emitter.EventPriority.LOW };
let eventData: emitter.EventData = {
data: { content: <span class="hljs-string">'c'</span>, id: <span class="hljs-number">1</span>, isEmpty: <span class="hljs-literal">false</span> }
};
// 发送eventId为1的事件,事件内容为eventData
emitter.emit(event, eventData);
}
@Entry @Component struct Index { @State message: string = ‘Hello World’
build() {
Row() { Column() { Text(<span class="hljs-string">"发送"</span>) .fontSize(<span class="hljs-number">50</span>) .fontWeight(FontWeight.Bold) .onClick(() => { sendEvent(); }) Text(<span class="hljs-string">"注册"</span>) .fontSize(<span class="hljs-number">50</span>) .fontWeight(FontWeight.Bold) .onClick(() => { registerEvent(); }) } .width(<span class="hljs-string">'100%'</span>) } .height(<span class="hljs-string">'100%'</span>)
} }
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>
更多关于HarmonyOS 鸿蒙Next EmitterData我在接收端如何解析?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙系统中,Next EmitterData的解析涉及对系统提供的数据结构和API的理解。接收端解析EmitterData时,通常需要通过以下步骤进行:
-
获取EmitterData: 首先,确保接收端正确地从发送端接收到了EmitterData对象。这通常通过系统提供的通信机制(如IPC)实现。
-
解析数据结构: EmitterData可能包含多种类型的数据,如事件类型、时间戳、数据内容等。你需要根据EmitterData的定义,使用相应的数据结构进行解析。
-
读取数据字段: 通过访问EmitterData对象中的各个字段,获取所需的数据。例如,如果EmitterData包含位置信息,你需要读取相应的位置字段。
-
处理数据: 根据业务需求,对解析后的数据进行处理。这可能包括数据转换、存储、显示等。
-
错误处理: 在解析过程中,可能会遇到数据格式不正确、字段缺失等问题。需要添加错误处理逻辑,确保系统的健壮性。
具体的解析方法和代码实现,需要参考HarmonyOS的官方文档和API说明。如果文档中没有提供详细的解析示例,你可以查阅相关的开发者论坛或社区,获取更多帮助。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html