【发布时间】:2021-01-31 21:10:55
【问题描述】:
如果外部 observable 给出有效值,我有以下代码运行内部 observable..
- 这里的第一个可观察对象,即外部可观察对象,是一个behaviorSubject。此行为主体的初始值为 null。用户登录后,behaviourSubject 会为我们提供一个用户对象。
- 作为内部可观察对象的第二个可观察对象是一个 http 调用,它将完全依赖于用户对象。所以它只会在外部 observable 给我们一个有用的用户对象而不是 null 时运行。
- 最后我想订阅内部 observable..
现在我不知道应该使用哪个运营商,所以我在订阅中使用订阅..这是我的代码
item = [];
ngOnInit(){
this.service.outerObs.subscribe(user => {
if(user !== null) {
this.http.get('some route', {headers: new HttpHeader({"Authorization": user.token})}) //here i am using the user object
.subscriber(result => {
this.items = result;
})
}
})
}
如果我先登录然后访问这个组件,我不会有任何问题,因为我的 behaviorSubject 将拥有最后一个用户对象。但是,如果我已经在这个组件中并尝试重新加载我的应用程序,那么我就会遇到问题,因为我的 autoLogin 功能需要一些时间才能在 behaviorSubject 中设置用户对象。所以我必须先检查 behaviorSubject 是否有一个有用的用户对象而不是 null发送http调用... 我应该使用哪个 rxjs 运算符来解决这个问题?
【问题讨论】: