rxjava,改进如何重试(retryWhen)了解具体情况



我有一个连接服务器和登录帐户的功能:

Observabe<Response> loginAccount();

大多数时候,它可以登录成功:

   loginAccount().subscribe(new Subscriber<Response>() {
        @Override
        public void onCompleted() {
           System.out.println("success");
        }
        @Override
        public void onError(Throwable e) {
            e.printStackTrace();
        }
        @Override
        public void onNext(Response authenticationResponseResult) {
          System.out.println(authenticationResponseResult,toString());
        }
    });
然而,有几次会出现SocketTimeoutException。我只想重试SocketTimeoutException最多重试两次

如何实现?

我知道可能我可以使用retryWhen,但我不知道如何使用它只有当异常是SocketTimeoutException和如何重试最多两次

使用retry的2参数过载:

loginAccount()
.retry((throwable, count) -> count < 2 && (throwable instanceof SocketTimeoutException))
.subscribe(....);

相关内容

  • 没有找到相关文章

最新更新