【发布时间】:2016-08-23 23:52:01
【问题描述】:
我是 rxjs 的新手,想要一些关于如何解决这个问题的帮助。
我想将Observer 传递给onAuthStateChanged(),它接受一个观察者对象。观察者会做一些工作并发出一个布尔值,以便布尔值可以作为Observable返回。我该如何去实现这个从可观察到观察者的桥梁?
export class AuthGuard implements CanActivate {
constructor(private firebase: FirebaseService, private router: Router) {
}
canActivate(): Observable<boolean> {
this.firebase.auth.onAuthStateChanged(/* an observer */)
return /* an Observable<boolean> */
}
}
【问题讨论】:
-
您可以重载
onAuthStateChanged的函数,使用replaySubject来记住该主题发出的最后一个值,在您的函数中使用该主题发出一些布尔值。然后返回相同的主题。主体既是可观察者又是观察者。所以主题将从函数中接收到值。作为一个 observable,其他侦听器可以订阅它,并取回该值。因为您使用了replaySubject,所以即使您的听众在主题发出后订阅该主题,他们仍然能够取回该值。
标签: firebase rxjs firebase-authentication