如何在catchError中发出另一个请求?

时间:2019-05-16 09:58:13

标签: angular typescript rxjs

  this.service.login().pipe(
      catchError((error: HttpErrorResponse, responseObservable: Observable<boolean>) => {
        if (error.status === 400) {
          return this.service.doSomethingElse.pipe(map(() => throwError(error)));
        } else {
          return throwError(error);
        }
      }),
    ).subscribe(

对此的响应始终为200,当状态码为400并从另一个请求返回时,它不会引发错误。 任何帮助都会很棒。

2 个答案:

答案 0 :(得分:3)

使用map(),您可以将值从this.service.doSomethingElse映射到throwError(error),从而获得流。

您应使用mergeMap或其他拼合运算符对其进行拼合。喜欢:

return this.service.doSomethingElse.pipe(mergeMap(() => throwError(error)));

答案 1 :(得分:0)

尝试一下:

this.service.login()
    .subscribe((res: any) => {
     }, error => {
       if (error.status === 400) {
          return this.service.doSomethingElse.pipe(map(() => throwError(error)));
       } else {
           return throwError(error);
       }
 })