[英]How to return an Observable in angular 4?
I have this method inside a authProvider
provider class: 我在
authProvider
提供程序类中有这个方法:
getUser() {
return this.afAuth.authState.subscribe(user => {
return user;
});
}
I would like to subscribe to it in a different class, something like: 我想在不同的课程中订阅它,例如:
this.authProvider.getUser().subscribe(user => console.log(user));
any ideas how to return an Observable
inside the getUser()
method? 任何想法如何在
getUser()
方法中返回一个Observable
?
Your authState
is already Observable. 您的
authState
已经是Observable。 Just return your authState
and subscribe within another function. 只需返回你的
authState
并在另一个函数中订阅。 In the function for any other work you can use RxJS#map function. 在任何其他工作的功能中,您可以使用RxJS #map功能。
getUser() : Observable {
return this.afAuth.authState.map(...);
}
....
login() {
getUser().subscribe(user => {
return user;
});
}
Don't subscribe inside the getUser
function. 不要在
getUser
函数中订阅。 Just return the obsevable. 只需返回可见的东西。
getUser() {
return this.afAuth.authState
}
You can do something like this. 你可以做这样的事情。 Then in your component, the one which is calling this function, you can subscribe to this observable.
然后在您的组件中,调用此函数的组件,您可以订阅此observable。
getUser(): Observable<any> {
return Observable.create( (observer: Observer<string>) => {
this.afAuth.authState.subscribe(user => {
observer.next(user);
}, (err) => observer.error("error"));
});
}
Ashley 阿什利
You need to set return type as observable 您需要将返回类型设置为observable
getUser(): Observable<Type> {
return this.afAuth.authState;
});
}
You can return the function directly and subscribe to it in another class. 您可以直接返回该函数并在另一个类中订阅它。
getUser() {
return this.afAuth.authState();
}
You can think of observables as functions that are called by subscribing. 您可以将observable视为订阅调用的函数。
this.authProvider.getUser().subscribe(user => console.log(user));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.