我有两种返回可观察值的方法。如果第一个返回一些数据,则无需调用第二个方法。但是,如果第一个方法返回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' )
}
在使用if-else订阅第一个可观察值之后,我可以轻松地做到这一点。喜欢
this.getdefaultAddress(id).subscibe(data =>{
if(data) {
// do something
}
else {
this.getFirstAddress(id).subscibe(data =>{
// do something
})
}
})
现在,如何在不真正订阅第一个可观察值的情况下进行检查?任何rxjs运算符?
先感谢您
最好使用例如concatMap
:
import { EMPTY } from 'rxjs';
import { concatMap } from 'rxjs/operators';
this.getdefaultAddress(id)
.pipe(
concatMap(data => data === null ? EMPTY : this.getFirstAddress(id)),
)
.subscribe();
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句