pra*_*wal 4 rxjs angular angular8
我有两种返回可观察值的方法。如果首先返回一些数据则无需调用第二个方法。但如果第一个方法返回 null,则仅调用第二个方法。
getdefaultAddress(id) : Observable<Address[]> {
return this.http.get<Address[]>(this.url + 'users/' + id + '/addresses' + '?filter[where][default]=true')
}
getFirstAddress(id): Observable<any>{
return this.http.get<any>(this.url + 'users/' + id +'/addresses?filter[limit]=1' )
}
Run Code Online (Sandbox Code Playgroud)
在使用 if-else 订阅第一个可观察值后,我可以轻松地做到这一点。喜欢
this.getdefaultAddress(id).subscibe(data =>{
if(data) {
// do something
}
else {
this.getFirstAddress(id).subscibe(data =>{
// do something
})
}
})
Run Code Online (Sandbox Code Playgroud)
现在我如何在不真正订阅第一个可观察对象的情况下检查这一点?有 rxjs 运算符吗?
先感谢您
const source1$: Observable<T| null>;
const source2$: Observable<T>;
const finalSource$ = source1$.pipe(
switchMap(value => value ? of(value) : source2$)
)
Run Code Online (Sandbox Code Playgroud)
只要外部源具有值,您就可以返回它。当它变得未定义/空时/事件,您切换到 source2$。