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为空

阅读 568
1 个回答
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进