这是一个案例,我使用Retrofit进行API调用,可能由于网络错误而失败。如果失败,我们将显示一个带有重试按钮的错误消息。当用户按下重试按钮时,我们需要重新尝试最新的Observable。
可能的解决方案:
可能的解决方案:
重试:应在订阅可观察对象之前使用重试,如果发生错误,它将立即再次订阅,这不是我想要的,我只需要在用户按下重试按钮后重新订阅。
RetryWhen:在发出项目并继续发出项目直到发出Observable错误时,它将一直尝试。这里也存在同样的问题,除非用户决定开始重试过程,否则我不需要启动重试过程。
重新订阅相同的Observable:此解决方案将开始发出Observable项,但我们正在使用缓存运算符,因此如果一个Observable失败,我们将缓存失败的项,当我们再次订阅时,我们将再次得到相同的错误。
cache(
的retryWhen(
操作符,您可以强制清除缓存吗? - Blundell