小编Vin*_*s G的帖子

用尽 RxJs retryWhen 运算符尝试后如何抛出异常?

我想在 subscribe 中捕获异常,但结果并不如预期。

this.userService.isUsernameValid (username)
      .pipe (
          catchError (err =>
          {
            return throwError (err);
          }),
          retryWhen (errors =>
              errors.pipe (
                  delay (2500),
                  take (4),
                  concatMap (() => throwError ('Network error'))
              )
          )
       )
      .subscribe (
          data =>
          {
            //
          },
          error =>
          {
            console.log (error)
          });
Run Code Online (Sandbox Code Playgroud)

我希望只有在所有尝试都失败时才抛出异常。

上面的代码只发出第一个请求,并且在发生错误时抛出异常(不重做请求)。

如果我删除 concatMap,将进行 4 次尝试,但如果没有成功,我将无法在订阅中捕获错误。

提前致谢。

rxjs typescript angular

3
推荐指数
1
解决办法
86
查看次数

标签 统计

angular ×1

rxjs ×1

typescript ×1