我有这段代码可以获取缓存的值:

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


我缓存了SiteConfiguration对象,但是如果它不存在,则需要去服务器获取它。但是我无法在第一个内部返回第二个可观察的对象,因为它将返回Observable<Observable<SiteConfiguration[]>>

我确定这是一种常见情况,但我的Google-fu无法找到答案。

最佳答案

您的代码应如下所示

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);

09-13 09:52