java - 你如何链接多个可观察对象?

标签 java android rx-java rx-android

假设我想显示服务器上的一些用户数据。我会搜索服务器,缓存它,然后将它呈现给用户。 所以我最初的 RxJava 代码看起来像这样:

 ApiClient.getUser(userId), //An Observable that will spit out a UserResponse
    .subscribeOn(Schedulers.io()) //for the API observable (Do i need this?)
    .flatMap(new Func1<UserResponse, Observable<DatabasePutResult>>() {
          @Override
           public Observable<DatabasePutResult> call(UserResponse response) {
                return Database.cacheUser(response);
             }
          })
    .subscribeOn(Schedulers.io()) //for the database observable
    .observeOn(AndroidSchedulers.mainThread())
    .subscribe(//handle DatabasePutResult object in onNext());

现在,我有两个问题。

  1. 这是链接两个 Observable 的正确方法吗?如果没有,我应该怎么做?
  2. 如果我想处理 Api Observable 的 onError,我能否在维护链的同时以某种方式做到这一点?如果没有,最好的方法是什么?我真的需要将链分成两组 RxJava 调用吗?

最佳答案

  1. 你不需要这个:

.subscribeOn(Schedulers.io())//用于 API observable(我需要这个吗?)

如果你感兴趣,你可以通过这段代码检查当前线程的id:

Thread.currentThread().getId();
其他一切都很好。

  1. 你应该看看这个:Error-Handling-Operators .在这种情况下,我建议仔细查看 onErrorResumeNext()

希望对您有所帮助。

关于java - 你如何链接多个可观察对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33619147/

相关文章:

java - 我希望我的 Android fragment 覆盖 MainActivity 屏幕(我不想看到任何 MainActivity 文本、按钮等)

Android 项目编译,但 Android Studio 无法识别 Maven 依赖项

android - 在 Android Activity 中共享相同的 SQLite 数据库

java - 如何使用响应式 android 和 Retrofit 发出多个请求

java - 是否可以将 Spring MVC 与 Jersey 注解一起使用?

java - 如何确保我正在检查未选中的复选框 selenium java

java - RxJava 2 : Why can't PublishProcessor subscribe to an Observable?

android - 如何订阅和取消订阅或取消 rxjava observable

java - 声明二维变量Java

Android 应用程序因 Firebase 而无法启动(在生产版本中)