如何从Observable中返回Observable

时间:2018-03-16 18:46:21

标签: angular typescript rxjs observable

我有这个代码来抓取缓存的值:

<div [@routerTransition]="getOutletState(outlet)">
       <router-outlet #outlet="outlet"></router-outlet>
</div>

我缓存getConfigurations(): Observable<SiteConfiguration[]> { return this.storageService.getSiteConfigurations().map(c => { if(c) { return c; } return this.httpClient.get<SiteConfiguration[]>(this.url + "/config").subscribe(c => c); }); } 对象,但如果它不存在则需要转到服务器才能获取它。但是我不能在第一个中返回第二个observable,因为它将返回SiteConfiguration

我确信这是一种常见的情况,但我的google-fu未能找到答案。

1 个答案:

答案 0 :(得分:4)

您的代码应如下所示

getConfigurations(): Observable<SiteConfiguration[]> {
    return this.storageService.getSiteConfigurations().flatMap(c => {
        if(c) {
            return Obserbable.of(c);
        }                         
        return this.httpClient.get<SiteConfiguration[]>(this.url + "/config")
    })        
}



getCOnfiguration().subscribe(c => c);