我有一个基本的功能OIDC安全服务,该服务调用API来获取用户详细信息。我需要在其他地方使用此功能。我想重用此函数,并根据条件在3个不同的位置进行一些处理,但是由于无法调用已经订阅的函数,是否有一种方法可以实现而无需一次又一次地编写此代码?
fetchUserDetails(){
// If it is null call oidc service
this.oidcSecurityService.getUserData().subscribe(
(userData: any) => {
if (userData) {
return userData
}
});
return null;
}
如果我直接调用该函数并进行一些处理,则我得到的错误是userData为空。
答案 0 :(得分:0)
这在很大程度上取决于您要做什么,但是您可以在订阅前使用share()
(或者也许是shareReplay()
)
fetchUserDetails() {
// If it is null call oidc service
const obs$ = this.oidcSecurityService.getUserData().share();
obs$.subscribe(
(userData: any) => {
if (userData) {
return userData
}
});
return obs$;
}