RxJava Планировщик с интервалом http: ожидание завершения запроса до повторного запроса? - PullRequest
1 голос
/ 28 марта 2019

Я использую RxJava с библиотекой AndroidFastNetworking. Если я хотел использовать класс планировщика для создания Observable, который инициализирует Http-запрос каждые 60 секунд, но я хотел, чтобы он дождался завершения инициализированного запроса (успех или ошибка), прежде чем снова начать 60-секундный интервал и инициализировать последующий один, на что это было бы похоже?

1 Ответ

0 голосов
/ 08 апреля 2019

Используйте источник rangeLong и flatMap с maxConcurrent = 1 (что гарантирует, что flatMap одновременно подписывается только на один внутренний Flowable):

Single<Result> request = ...;
Flowable<Result> delay = 
  Flowable.<Result>empty()
    .delaySubscription(60, TimeUnit.SECONDS, scheduler);
Flowable<Result> flowable = 
  Flowable
    .rangeLong(0, Long.MAX_VALUE)
    .flatMap(n -> request
       .toFlowable()
       .concatWith(delay), 1))
    .doOnNext(result -> System.out.println(result))
    ...   
...