我想知道你应该如何构建一个调用后端的应用程序。
在服务中包装 HTTP 调用似乎是一种自然的做事方式,但是如何/在哪里保存数据以保持一致性?例如,我有一个显示某种 Todo 列表的组件,该列表是从后端检索的OnInit
。现在,当从这个组件路由并再次路由回来时,它的所有数据都会被重置。当然,您可以再次调用后端,但是将数据保存在某种服务(甚至是 HTTP 服务)中以供进一步使用不是更有利吗?
进一步澄清:
class Service {
storedData: number[] = []
allObjects: BehaviorSubject<any> = new BehaviorSubject()
...
getObj(id) {
if (!this.storedData.includes(id)) {
this.getDataFromServer(id)
}
return this.allObjects.pipe(
map(objects => objects.find(obj => obj.id === id)),
filter(obj => obj && true)
)
}
getDataFromServer(id) {
return this.http.get(id).pipe(
tap(obj => {
this.storedData.push(id)
this.allObjects.put(id, obj)
})
)
}
}
这是一种可行的方法还是有其他方法来处理这种情况?
此外,使用需要多种服务来填充其所有字段的对象的最佳方法是什么。(Obj: {a: number, b: number}
,a
由AService
和检索)b
。BService
您会将这些对象存储在哪里(注入AService
并将BService
其存储BService
/注入到向请求组件提供数据的第三个服务中)?
存储它的最佳方式是什么?