【发布时间】:2020-03-17 02:31:30
【问题描述】:
我是 rxjs 运算符的新手
执行两个请求并检查其中一个请求是否返回有效并检查两个请求是否都失败的最有效方法是什么。
我尝试了 forkJoin,但无法确定两个请求都失败时如何处理。
【问题讨论】:
-
ForkJoin 返回结果数组。检查一下。
标签: angular rxjs observable angular8 rxjs-observables
我是 rxjs 运算符的新手
执行两个请求并检查其中一个请求是否返回有效并检查两个请求是否都失败的最有效方法是什么。
我尝试了 forkJoin,但无法确定两个请求都失败时如何处理。
【问题讨论】:
标签: angular rxjs observable angular8 rxjs-observables
不正确,可以这样使用forkjoin:
this.forkJoinRequest= forkJoin([this.service.getMethod1(), this.service.getMethod2()]).subscribe(response => {
this.list1= response[0];
this.list2=response[1];
},
(error) => { this.error_code = error.status; });
您可以使用您的“错误”来说明 forkjoin 失败的原因。
【讨论】:
好吧,forkJoin 可能是您要查找的内容,但如果您希望能够处理这两个错误,则需要使用catchError 链接每个源并将错误作为next 通知返回。
否则一个失败的源 Observable 会处理链,你永远不会知道第二个 Observable 是否也失败了,或者两个 Observable 中的哪一个失败了。
forkJoin([
source1$.pipe(catchError(error => of(error))),
source2$.pipe(catchError(error => of(error))),
]).subscribe(([reponse1, response2]) => {
if (reponse1 instanceof ErrorResponse || reponse2 instanceof ErrorResponse) {
// or whatever works for you
}
});
【讨论】: