Javascript 从函数返回可观测值

Javascript 从函数返回可观测值,javascript,angular,typescript,rxjs,Javascript,Angular,Typescript,Rxjs,我在typescript中具有以下功能: getConfigurations() { let sessionConfig = sessionStorage.getItem('config'); if(config) return of(sessionConfig); else { this.dataService.getRoute('configurations').subscribe( route => this.h

我在typescript中具有以下功能:

getConfigurations() {
    let sessionConfig = sessionStorage.getItem('config');
    if(config)
        return of(sessionConfig);
    else {
        this.dataService.getRoute('configurations').subscribe(
        route => this.http.get<any[]>(route.ToString()).subscribe(
            result => {
                sessionStorage.setItem('config', result);
                return of(result);
            },
            error => {
                alert(error);
            }),
        error => {
            alert(error);
        }
        );
    }
}
其中http是角度HttpClient

如何获取从getConfigurations()返回的值


我试图订阅GetConfiguration。我对if条件(返回字符串sessionConfig)没有问题,但是如何从else条件获得结果呢?我应该返回整个零件的可观察值吗?在这种情况下,如何读取返回值?

不要订阅可观察对象,返回它,然后使用
点击
操作符存储响应:

getConfigurations() {
    let sessionConfig = sessionStorage.getItem('config');
    if(config)
        return of(sessionConfig);
    else {
        return this.dataService.getRoute('configurations').pipe(
          mergeMap(route => this.http.get<any[]>(route.ToString()),
          tap(result => sessionStorage.setItem('config', result))
        );
    }
}
getConfigurations(){
让sessionConfig=sessionStorage.getItem('config');
如果(配置)
返回(sessionConfig);
否则{
返回此.dataService.getRoute('configurations').pipe(
mergeMap(route=>this.http.get(route.ToString()),
点击(结果=>sessionStorage.setItem('config',结果))
);
}
}

不要订阅可观察对象,返回它,然后使用
点击
操作符存储响应:

getConfigurations() {
    let sessionConfig = sessionStorage.getItem('config');
    if(config)
        return of(sessionConfig);
    else {
        return this.dataService.getRoute('configurations').pipe(
          mergeMap(route => this.http.get<any[]>(route.ToString()),
          tap(result => sessionStorage.setItem('config', result))
        );
    }
}
getConfigurations(){
让sessionConfig=sessionStorage.getItem('config');
如果(配置)
返回(sessionConfig);
否则{
返回此.dataService.getRoute('configurations').pipe(
mergeMap(route=>this.http.get(route.ToString()),
点击(结果=>sessionStorage.setItem('config',结果))
);
}
}