如何从 Observable 内部返回 Observable

Jon*_*lis 3 observable rxjs typescript angular

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

getConfigurations(): Observable<SiteConfiguration[]> {
    return this.storageService.getSiteConfigurations().map(c => {
        if(c) {
            return c;
        }                         
        return this.httpClient.get<SiteConfiguration[]>(this.url + "/config").subscribe(c => c);
    });        
}
Run Code Online (Sandbox Code Playgroud)

我缓存了该SiteConfiguration对象,但如果它不存在,则需要转到服务器来获取它。但是我不能在第一个中返回第二个 observable,因为它会返回一个Observable<Observable<SiteConfiguration[]>>.

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

Ric*_*rdo 7

你的代码应该是这样的

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);
Run Code Online (Sandbox Code Playgroud)