我目前有两个API请求,第一个请求进入第二个:
.get('/call1', { })
.pipe(
switchMap(response => {
this.api.get('/call2', { })
这很好(尽管有更合适的方法,我很想听听!)。但是,通过对我的应用程序进行了一些最近的更改,我意识到在某些情况下我已经存储了call1
的数据,因此可以直接进行第二次调用,但是我不知道该怎么做。在其他情况下,在switchMap
中,我做了类似的事情:
if (condition)
return this.api.get('/call2');
else
return ObservableOf(cachedData);
如何为链中的第一个电话做类似的事情?
答案 0 :(得分:1)
您可以在单独的函数中应用条件
def nthterm(first, n, c)
(1..n).reduce([first]){|memo| memo << memo[-1] + c}
end
该函数可以决定从何处获取数据并返回可观察对象,就像您的示例一样:
getCall1()
.pipe(
switchMap(response => {
this.api.get('/call2', { })
答案 1 :(得分:0)
我建议您在API层中使用某种缓存层或数据存储。这样,每次调用“ this.api.get()”时,如果已检索到具有适当值的可观察对象,则可以返回该对象。我们使用最新版本的angular并执行类似的操作,同时使用浏览器的本地存储在API调用后保存值。