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

标签 android retrofit rx-java

我想每 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 这样的运算符,但我找不到正确使用它们的方法。

最佳答案

这应该可行

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

关于android - RXJava 如何在 x 时间后尝试获取下一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33288546/

相关文章:

Android - 如何在 WebView 中播放 Youtube 视频?

Android 如何使用叠加在 MapView 中徒手绘制油漆?

java - 如何避免在两个 Activity 中调用工具?

java - 如何在 Retrofit 上上传没有 header 和容器的文件

android - 如何在 Retrofit-2.0+ android 中设置超时

android - 在 RxJava 中处理 API 异常

android - 按钮文本显示为垂直

android - 改造.改造错误: 404 Not Found

java - 按需执行热 Observable

android - RxJava 作为 Android 项目中的事件总线——从总线中移除事件