我想通过订阅重试一个observable。这一切都很顺利但现在我每次重试这个观察时我都试图执行一些代码。有什么建议?
observableItem.retry(1).subscribeWith(subscriber);
答案 0 :(得分:2)
你需要doOnSubscribe
运算符在订阅observable时有效(在observable发出任何项目之前)。
...
observableItem
.doOnSubscribe(subscriber1 -> {
// Do whatever you want to de before retry.
})
.retry(1)
.subscribeWith(subscriber)
...
注意:我还没有测试过。请测试一下,让我知道。
希望它有所帮助。
答案 1 :(得分:0)
您可以使用retryWhen
代替retry
。
observableItem
.retryWhen(attempts -> {
return attemps.flatMap(error -> {
// TODO: Do what you want here...
// If you return an Observable with an `onNext` event => retry
// else if you return an Observable with an error => no retry
return Observable.just(new Object());
})
})
.subscribeWith(subscriber);