如何根据输出重试 Observable

How to retry the Observable based on its output

假设我有一个 Observable,它可能会或可能不会发出事件,这意味着只调用 onComplete() 而没有 onNext()。如果没有事件发出,我需要从 Observable 重复操作。我怎样才能做到这一点?谢谢!

switchIfEmpty 可能有帮助:

source.switchIfEmpty(
           Observable.error(new RuntimeException("is empty")))
      .retry()

请记住,除了上面抛出的错误外,其他错误也会提示重试,这可能并不理想。在这种情况下,我建议使用不同的 retry 重载:

source.switchIfEmpty(
           Observable.error(new EmptyException()))
      .retry((retryNumber, throwable) -> throwable instanceof EmptyException)