Javascript 如果一个可观察值不为null,如何返回该值,否则调用http服务并返回数据? @Injectable() /*** *管理配置文件的服务 */ 导出类ManageProfileService{ private UserDetails:any=null; public GetUserDetails$:可观察 }

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

我想订阅服务中可观察到的GetUserDetails,如果UserDetails的值不为null,它应该返回,然后返回UserDetails变量值,否则调用HTTP服务“GetUserDetails”,并返回从服务获得的数据,如果HTTP服务失败,它应该返回null。请提供任何帮助以解决问题。

您可以使用RxJS函数将变量
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>
}