HarmonyOS 鸿蒙Next emitter.on回调里接收的数据为空
HarmonyOS 鸿蒙Next emitter.on回调里接收的数据为空
2 回复
import { emitter } from '@kit.BasicServicesKit';
@Entry
@Component
struct EmitterTest {
aboutToAppear(): void {
emitter.on("EmitterTest", (eventData: emitter.EventData) => {
let eventDataMap = eventData.data?.eventDataMap as Map<string, Object>
console.info('EmitterTest callback, eventData:' + eventDataMap.get('1'));
console.info('EmitterTest callback, eventData:' + eventDataMap.get('2'));
});
}
build() {
RelativeContainer() {
Button('sned emitter', { stateEffect: true, type: ButtonType.Capsule })
.width('80%')
.height(40)
.margin(10)
.onClick(() => {
let eventDataMap = new Map<string, Object>()
eventDataMap.set("1", "111")
eventDataMap.set("2", "222")
let eventData: emitter.EventData = {
data: { eventDataMap }
};
let options: emitter.Options = {
priority: emitter.EventPriority.LOW
};
emitter.emit("EmitterTest", options, eventData);
})
}
.height('100%')
.width('100%')
}
}
针对您提到的HarmonyOS(鸿蒙)系统中Next emitter.on回调接收数据为空的问题,这通常可能由以下几个原因引起:
-
数据源问题:首先确认数据源是否已正确发送数据。检查数据源的emit调用是否传递了正确的参数,并且这些参数在调用时确实不为空。
-
事件订阅问题:确认您订阅的事件类型与数据源触发的事件类型是否一致。不匹配的事件类型可能导致回调无法接收到预期的数据。
-
数据传递问题:在事件传递过程中,可能存在数据丢失或未正确传递的情况。检查事件传递链中的每个环节,确保数据在传递过程中保持完整。
-
回调实现问题:检查回调函数的实现,确保在接收数据时正确处理了数据。如果回调函数内部有逻辑错误,也可能导致看似数据为空的情况。
-
系统或环境问题:在某些情况下,系统或环境问题(如内存不足、线程冲突等)也可能导致数据传递异常。
建议从上述几个方面逐一排查问题。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html ,他们将提供更专业的技术支持。