Исправить онлайн поиск RxJava2 - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть продукты для онлайн-поиска на сервере, но когда соединение недоступно, мне нужны продукты для локального поиска. Мой код не работает:

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);
            });
}

Когда я получаю сообщение об ошибке подключения, локальный поиск не работаетРабота.Пожалуйста, помогите мне, спасибо.

...