RXJava 如何在 x 时间后尝试获取下一个

RXJava how to try to get next after x time

我想每隔 x 秒使用改装调用 Web 服务,直到出现 y 条件。

我想在 x 秒后 运行 OrderApi.get 直到响应为空。

public class OrderApi {}
    public static Observable<Order> get() { 
        //...
    }
}


OrderApi.get(order.getId()))
        .subscribe(updatedOrder -> {
          mShouldRun = updatedOrder != null;
        });

已经看到像 Observable.delay Observable.timber 这样的运算符,但我找不到正确使用它们的方法。

timerrepeat 的组合应该可以做到

Observable.timer(1000, TimeUnit.MILLISECONDS)
       .subscribeOn(Schedulers.io())
       .observeOn(AndroidSchedulers.mainThread())
       .repeat(Schedulers.io())
       .subscribe(new Action1<Object>() {
           @Override
           public void call(Object aLong) {
              System.out.println(System.currentTimeMillis());
           }
       });

回调 call 每 1 秒调用一次

这应该有效

 Observable.interval(1, TimeUnit.SECONDS)
                .flatMap(new Func1<Long, Observable<?>>() {
                    @Override
                    public Observable<?> call(Long aLong) {
                        return OrderApi.get();
                    }
                }).takeUntil(new Func1<Object, Boolean>() {
            @Override
            public Boolean call(Object o) {
                return o==null;
            }
        }).subscribe(observer);