RxJava Scheduler interval http轮询等待请求完成,然后再次轮询?

时间:2019-03-28 20:18:34

标签: http rx-java afnetworking

我正在将RxJava与AndroidFastNetworking库一起使用。如果我想使用Scheduler类创建一个Observable,该Observable每60秒初始化一次Http请求,但是我希望它等待初始化的请求完成(成功或错误),然后再次开始60秒间隔并初始化后续一,那会是什么样?

1 个答案:

答案 0 :(得分:0)

使用rangeLong = 1的flatMap源和maxConcurrent(确保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))
    ...