1

我是 rxjs 运算符的新手

执行两个请求并检查其中一个请求是否返回有效并检查两者是否都失败的最有效方法是什么。

我尝试了 forkJoin 但无法确定两个请求都失败时如何处理。

4

2 回答 2

1

不是真的,可以这样使用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 失败的原因。

于 2019-11-21T08:36:35.793 回答
1

好吧,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
  }
});
于 2019-11-21T10:24:53.563 回答