Javascript 从函数返回可观测值
我在typescript中具有以下功能: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
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',结果))
);
}
}