2017-08-14 45 views

回答

2

您可以使用retry()运营商立即自动重新订阅。或者,您可以使用retryWhen()运营商延迟或仅有条件地重新订阅。

observable 
    .retryWhen(error -> error.flatMap(e -> Observable.timer(1, SECONDS)) 

将在1秒后重试订阅。使用flatMap(),你也可以测试这种错误,并只对特定的错误重试。如果误差IOException而不是为了任何其他类型的错误

observable 
    .retryWhen(error -> error.flatMap(e -> { 
    if (e instanceof IOException) {return Observable.timer(1, SECONDS);} 
     return Observable.just(e); 
    }) 

将重试。

相关问题