Javascript 如果一个可观察值不为null,如何返回该值,否则调用http服务并返回数据? @Injectable() /*** *管理配置文件的服务 */ 导出类ManageProfileService{ private UserDetails:any=null; public GetUserDetails$:可观察 }
我想订阅服务中可观察到的GetUserDetails,如果UserDetails的值不为null,它应该返回,然后返回UserDetails变量值,否则调用HTTP服务“GetUserDetails”,并返回从服务获得的数据,如果HTTP服务失败,它应该返回null。请提供任何帮助以解决问题。您可以使用RxJS函数将变量Javascript 如果一个可观察值不为null,如何返回该值,否则调用http服务并返回数据? @Injectable() /*** *管理配置文件的服务 */ 导出类ManageProfileService{ private UserDetails:any=null; public GetUserDetails$:可观察 },javascript,angular,typescript,Javascript,Angular,Typescript,我想订阅服务中可观察到的GetUserDetails,如果UserDetails的值不为null,它应该返回,然后返回UserDetails变量值,否则调用HTTP服务“GetUserDetails”,并返回从服务获得的数据,如果HTTP服务失败,它应该返回null。请提供任何帮助以解决问题。您可以使用RxJS函数将变量UserDetails作为可观察变量返回 试试下面的方法 服务 从'rxjs'导入{of}; @可注射() 导出类ManageProfileService{ private Us
UserDetails
作为可观察变量返回
试试下面的方法
服务
从'rxjs'导入{of};
@可注射()
导出类ManageProfileService{
private UserDetails:any=null;
public getUserDetails():可观察{
返回(!!this.UserDetails)?(this.UserDetails):this.http.get('url');
}
}
然后可以在组件中订阅
组成部分
导出类SomeComponent实现OnInit{
...
恩戈尼尼特(){
此.manageProfileService.getUserDetails().subscribe(
res=>{
//res-`this.manageProfileService.UserDetails`如果已定义
//res-来自'http.get('url')`的响应,如果不是
},
错误=>{}
);
}
}
@Injectable()
/***
* Service for manage profile
*/
export class ManageProfileService {
private UserDetails: any = null;
public GetUserDetails$: Observable<any>
}