HarmonyOS 鸿蒙Next 回调方法里面无法获取到回调回来的数据

发布于 1周前 作者 h691938207 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 回调方法里面无法获取到回调回来的数据

深色代码主题
复制
export class CallQueryData {
err?: BusinessError<void>;
resultSet?: relationalStore.ResultSet

constructor(resultSet?: relationalStore.ResultSet, err?: BusinessError<void>) { this.err = err; this.resultSet = resultSet; } } //接口定义 export interface QueryCallback { call(query: CallQueryData): void } ///方法实现 //根据谓词指定的查询条件查找数据 public getData(serviceId: string, userId: string, tableName: string, atomArr: string[], whereMap: Map<string, ValueType>, call: QueryCallback) { let predicates = new relationalStore.RdbPredicates(tableName); whereMap.forEach((value, key) => { predicates.equalTo(key, value); // 匹配表tableName中key为val的字段 }); if (store != undefined) { (store as relationalStore.RdbStore).query(predicates, atomArr, (err: BusinessError<void>, resultSet: relationalStore.ResultSet) => { if(call) { let queryD = new CallQueryData(resultSet, err) call.call(queryD) } if (err) { console.error(Failed to query data. Code:<span class="hljs-subst">${err.code}</span>, message:<span class="hljs-subst">${err.message}</span>); // reject(err); return; } console.info(ResultSet column names: <span class="hljs-subst">${resultSet.columnNames}</span>, column count: <span class="hljs-subst">${resultSet.columnCount}</span>); }) } else { if(call) call.call(new CallQueryData(undefined, new CommonDBError(‘数据库未初始化。’))) } }

///方法调用 this.mDBUtil.getData(serviceId, userId, this.CONVERSATION_TABLE.tableName, this.CONVERSATION_TABLE.columns, whereMap, (queryD: CallQueryData) => { console.info("添加数据返回信息==== " + queryD.err + " ====== " + queryD.resultSet);

if (queryD.resultSet) { let infoS = this.valuesBucket2ConversationInfo(queryD.resultSet); if(call) call.call(infoS, undefined) } else { if(call) call.call(undefined, queryD.err) }

}) 调用方法返回回来的queryD是undefined, 断点调试显示的queryD对象是有值的, 回调回来就是undefined

请帮忙确认已下具体原因, 我这个是跨lib访问方法会有影响吗? 回调方法里面无法获取到回调回来的数据。


更多关于HarmonyOS 鸿蒙Next 回调方法里面无法获取到回调回来的数据的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复
我断点调试显示的queryD对象是有值的, 但回调回来就是undefined,有可能是你这边数据还没获取到就回调返回数据了,可以试下用异步的方式去获取数据。

更多关于HarmonyOS 鸿蒙Next 回调方法里面无法获取到回调回来的数据的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,如果在回调方法里无法获取到回调回来的数据,可能的原因及解决方案如下:

  1. 数据传递错误

    • 确保回调接口的定义正确,数据类型与回调实际传递的数据类型一致。
    • 检查数据在传递过程中是否被意外修改或清空。
  2. 回调时机问题

    • 验证回调是否在数据生成后被正确触发。
    • 如果回调是在异步操作中触发,确保数据在回调触发前已准备好。
  3. 线程或上下文问题

    • 如果回调在不同的线程或上下文中执行,确保数据访问是线程安全的。
    • 检查是否有上下文丢失或不一致的情况导致数据无法正确访问。
  4. 内存管理问题

    • 确认数据在回调触发前未被释放或回收。
    • 检查内存管理机制,确保数据在回调执行期间仍然有效。
  5. 权限或安全策略

    • 验证应用是否有足够的权限访问回调数据。
    • 检查是否有安全策略阻止数据访问。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。确保提供详细的错误日志和代码示例,以便客服人员更快地定位问题。

回到顶部