处理从不同后端端点异步加载的数据类型之间的依赖关系的最佳方法是什么?
我的应用程序从后端获取数据,对于每个实体,我有一个端点来获取所有实例。
例如,api.myserver.com/v1/users
模型为User
,api.myserver.com/v1/things
模型为Thing
。
此数据将被解析并放入数据存储对象(例如UserDataStore
和ThingDataStore
),以便将这些模型提供给应用程序的其余部分。
如果来自/things
的数据取决于来自/users
的数据并且获取操作是异步的,我该怎么办?在我的情况下,/things
会返回创建它们的用户的id
。这意味着如果/things
在/users
之前返回,那么我将无法获得足够的数据来创建Thing
模型。
让/things
还返回相关的/users
数据嵌套。
这很糟糕,因为:
User
- 一个来自/users
,另一个嵌套在/things
。/users
返回的数据可能与/things
不同,然后它允许部分填充的模型位于应用中。在两个数据存储之间创建操作依赖关系,以便ThingsDataStore
在尝试加载自己的数据之前必须等待UserDataStore
填充。
这也很糟糕,因为:
对于我的问题以及一般情况,最佳解决方案是什么? 这显然不依赖于平台/语言。
答案 0 :(得分:1)
我看到两种可能的解决方案:
UserDataStore
中ThingDataStore
的延迟初始化。您将不得不允许创建一个不完全有效的对象。您还需要添加方法,以便为您提供是否初始化UserDataStore
的信息。不完美,因为有一段时间会存在无效的实例。
为ThingDataStore
创建某种代理或buider对象,它将保存有关特定事物的所有信息,并在ThingDataStore
与此相关时立即生成UserDataStore
个对象将收到实例。
也许它会对你有所帮助。祝你好运!