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