使链中的第一个可观察对象可选



我目前有两个 API 请求,第一个请求馈送到第二个请求中:

.get('/call1', { })
.pipe(
switchMap(response => {
this.api.get('/call2', { })

这工作正常(尽管如果有更合适的方法,我很想听听!但是,随着最近对我的应用程序的一些更改,我意识到在某些情况下,我拥有call1已经存储的数据,因此可以直接进行第二次调用,但我不知道该怎么做。在其他情况下,在switchMap内,我做了类似的事情:

if (condition)
return this.api.get('/call2');
else
return ObservableOf(cachedData);

如何对链中的第一个调用执行类似操作?

您可以在单独的函数中应用条件

getCall1()
.pipe(
switchMap(response => {
this.api.get('/call2', { })

该函数可以决定从何处获取数据并返回可观察量,就像您的示例一样:

getCall1() : Observable<any>{
if (condition)
return this.api.get('/call2');
else
return of(cachedData);
}

我建议在API层中使用某种缓存层或数据存储。这样,每次调用"this.api.get(("时,如果已经检索到,都可以返回具有适当值的可观察量。我们使用最新版本的 angular 并执行类似操作,同时使用浏览器的本地存储在本地保存 API 调用后的值。

最新更新