gpt4 book ai didi

仅当第一个可观察对象为空时, Angular rxjs 才订阅第二个可观察对象

转载 作者:行者123 更新时间:2023-12-05 00:46:32 24 4
gpt4 key购买 nike

我有两种方法可以返回 observables。如果先返回一些数据,则无需调用第二个方法。但是如果第一个方法返回 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 订阅第一个 observable 后,我可以轻松地做到这一点。喜欢

this.getdefaultAddress(id).subscibe(data =>{
if(data) {
// do something
}

else {
this.getFirstAddress(id).subscibe(data =>{
// do something
})
}
})

现在我如何在不真正订阅第一个 observable 的情况下检查这个?有 rxjs 运算符吗?

提前谢谢你

最佳答案

const source1$: Observable<T| null>;
const source2$: Observable<T>;

const finalSource$ = source1$.pipe(
switchMap(value => value ? of(value) : source2$)
)

只要外部源有值,您就返回它。当它变为 undefined/null 的时刻/事件时,您切换到 source2$。

关于仅当第一个可观察对象为空时, Angular rxjs 才订阅第二个可观察对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59984375/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com