Angular 从一个可观察到的对象中获取另一个可观察到的对象的值
我有一个Angular 从一个可观察到的对象中获取另一个可观察到的对象的值,angular,rxjs,observable,Angular,Rxjs,Observable,我有一个function1(),它调用function2(),它返回一个可观察的 功能1 function1(url: string):Observable<boolean> { return this.function2().map(res=>{ if (this.data== true) { return true; }
function1()
,它调用function2()
,它返回一个可观察的
功能1
function1(url: string):Observable<boolean> {
return this.function2().map(res=>{
if (this.data== true)
{
return true;
}
else{
this.router.navigate(['/error-user']);
return false;
}
});
function3()
订阅服务调用
功能3
function3(){
this.service.getUserInfo ()
.subscribe(
response => {
//some data
this.data=true;
})
}
现在我想要的是function3()
中的this.data
可以在function2()
中访问,因为我正在function1()
中使用map
操作符来使用它
到目前为止,我尝试的是以下内容:
function2(){
debugger;
return this.service.getSettings()
.do(
response => {
//some data
this.function3().map(
()=> console.log( this.data) ).subscribe(()=>{return this.data});
//this.data from function3() should be accesible here
});
}
function3(){
return this.service.getUserInfo ()
.do(
response => {
//some data
this.data=true;
})
}
但是,使用上面的方法,我无法从function2()范围内的function3()中获取
this.data
的值。此外,此数据也应传递给function1()。对function3()使用可观察的:
更新1:
function2(){
let myData = {}; // if data an obj
debugger;
return this.service.getSettings()
.do(
response => {
//some data
this.myData = this.function3().subscribe((data) => {
return data;
});
// the data from function3() is now available here
});
}
更新2:
function2(){
let myData = {}; // if data an obj
debugger;
return this.service.getSettings()
.do(
response => {
//some data
this.myData = this.function3().subscribe((data) => {
return data;
});
// the data from function3() is now available here
});
}
另一个更好理解的例子。我就是这样使用它的:
职能:
getLoginInfo(): Observable<any> {
return this.jsonApiService.fetch('/user/login-info.json')
.do((user) => {
this.userInfo = user;
this.user.next(user);
});
}
对于function3()
,也可使用Observable
:
更新1:
function2(){
let myData = {}; // if data an obj
debugger;
return this.service.getSettings()
.do(
response => {
//some data
this.myData = this.function3().subscribe((data) => {
return data;
});
// the data from function3() is now available here
});
}
更新2:
function2(){
let myData = {}; // if data an obj
debugger;
return this.service.getSettings()
.do(
response => {
//some data
this.myData = this.function3().subscribe((data) => {
return data;
});
// the data from function3() is now available here
});
}
另一个更好理解的例子。我就是这样使用它的:
职能:
getLoginInfo(): Observable<any> {
return this.jsonApiService.fetch('/user/login-info.json')
.do((user) => {
this.userInfo = user;
this.user.next(user);
});
}
只有当您看到我在问题中所做的尝试时,function3才会返回一个可观察的。@AakashThakur为什么不调用getUserInfo()
insidefunction2()
?@AakashThakur无论如何,要访问function3()
,您可以按照我的方法执行。如果您需要使用在function3()
中获得的数据进行操作,只需订阅它,然后在subscribe()
中执行所需的操作……但是如何使中的此.data
可用function1@AakashThakur检查如何访问“我的更新”中的数据。如果您需要function3()
返回的数据,只需在需要该数据的地方订阅function3()
。只有当您看到我在问题中尝试的内容时,function3才会返回一个可观察的。@AakashThakur为什么不在function2()
内部调用getUserInfo()
?@AakashThakur,要访问function3()
,您可以按照我的方法进行操作。如果您需要使用在function3()
中获得的数据进行操作,只需订阅它,然后在subscribe()
中执行所需的操作……但是如何使中的此.data
可用function1@AakashThakur检查如何访问“我的更新”中的数据。如果需要function3()
返回的数据,只需在需要数据的地方订阅function3()
。