У меня есть продукты для онлайн-поиска на сервере, но когда соединение недоступно, мне нужны продукты для локального поиска. Мой код не работает:
private Flowable<SearchProducts> getRequest(Flowable<SearchProducts> network,Flowable<SearchProducts> local) {
return network
.retryWhen(new RetryWithDelay(Util.PING_COUNT,Util.PING_TIME))
.onErrorResumeNext(local);
}
public class RetryWithDelay implements Function<Flowable<? extends Throwable>, Flowable<?>> {
private final int maxRetries;
private final int retryDelayMillis;
private int retryCount;
public RetryWithDelay(final int maxRetries, final int retryDelayMillis) {
this.maxRetries = maxRetries;
this.retryDelayMillis = retryDelayMillis;
this.retryCount = 0;
}
@Override
public Flowable<?> apply(final Flowable<? extends Throwable> attempts) {
return attempts
.flatMap((Function<Throwable, Flowable<?>>) throwable -> {
if (++retryCount < maxRetries) {
// When this Observable calls onNext, the original
// Observable will be retried (i.e. re-subscribed).
return Flowable.timer(retryDelayMillis,
TimeUnit.MILLISECONDS);
}
// Max retries hit. Just pass the error along.
return Flowable.error(throwable);
});
}
Когда я получаю сообщение об ошибке подключения, локальный поиск не работаетРабота.Пожалуйста, помогите мне, спасибо.