HarmonyOS 两个异步函数同时操作rdbstore的数据竞争问题处理

两个异步函数同时操作rdbstore的数据竞争问题处理,该如何避免?

私信场景,两个接口分别获取商品信息和联系人头像昵称,分别在两个异步函数发起请求,之后读取数据库,并更新信息,但是测试发现数据有竞争现象,导致数据被覆盖。

func1() {
  let user = await MsgCenterContactDB.getContactByUid(uid);
  user.name = xxx;
  await MsgCenterContactDB.insertOrUpdate(user);
}
func2() {
  let user = await MsgCenterContactDB.getContactByUid(uid);
  user.headPic = xxx;
  await MsgCenterContactDB.insertOrUpdate(user);
}

这两个函数都是异步的,导致数据产生了错乱,最终headPic或者name为空

HarmonyOS
2024-12-27 13:22:06
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
FengTianYa

关于此问题,官方有约束,同一时间只能有一个写操作,参考链接:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/data-persistence-by-rdb-store-V5

请确认是否使用API是10? 如果是的话,可通过指定冲突解决模式,来解决此问题,参考链接:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-data-relationalstore-V5#update10

分享
微博
QQ
微信
回复
2024-12-27 16:23:14
相关问题
关于数据两个问题
2710浏览 • 1回复 待解决
HarmonyOS 怎么让两个list同时滚动
395浏览 • 1回复 待解决
HarmonyOS 两个同级组件问题
914浏览 • 1回复 待解决
关于Image组件两个问题
813浏览 • 1回复 待解决
HarmonyOS 两个网页间数据如何同步
225浏览 • 1回复 待解决
两个设备控制相关问题
9217浏览 • 3回复 已解决
HarmonyOS 两个枚举类型之间转换问题
562浏览 • 1回复 待解决
HarmonyOS 关于两个权限区别
717浏览 • 1回复 待解决
HarmonyOS 两个日期怎么比较
608浏览 • 1回复 待解决
HarmonyOS 如何合并两个对象
568浏览 • 1回复 待解决
HarmonyOS 如何比较两个日期大小?
906浏览 • 1回复 待解决