微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

跨 UI 同步 Javascript 状态

如何解决跨 UI 同步 Javascript 状态

关于在设备之间同步状态或从外部存储到/从 UI 同步状态有很多问题。这个问题是关于 UI 中的状态。

UI 可能有多个可以指向一个实体的状态对象。 例如。多个具有相同 ID 且本质上是数据库中相同用户用户模型。

第二个选项是使用一种模式来防止多个实体并强制单个实体永不重复。 例如。检索 ID=1 的用户模型将始终返回相同的模型。

所以我目前面临的选择:

  1. 有多个模型指向同一个数据库实体
  2. 强制一个模型实例反映一个数据库实体

这两者都有其权衡:

有多个模型指向同一个数据库实体

这需要在更新副本时同步具有相同 ID 的模型。 这在实现中变得非常重要。 我们当前的实现是一个 EntityManager,它保存每个模型的副本并将写入传播到所有副本。 然而,由于对远程副本的异步写入、从其他设备读取和远程获取以及模型内的反应 (mobx) 需要确保它们对模型的一致状态做出反应,因此它在同步方面具有复杂性。

强制模型的单个实例反映数据库实体

这不需要同步工作。然而,我们需要确保我们没有任何指向同一个数据库实体的模型副本。 这将受到编码约定的约束。

例如

model.fromJSON({ title: 'foo' })
model.fetch() 

成为

model = model.fromJSON({ title: 'foo' })
model = model.fetch()

这对于新开发人员来说很难理解,并且随着时间的推移可能会被忽略,从而产生难以调试的错误

问题是您通常如何以一致且最简单的错误案例来解决这种情况。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。