你如何链接多个可观察对象?
How do you chain multiple observables?
假设我想显示服务器上的一些用户数据。我会搜索服务器,缓存它,然后将它呈现给用户。
所以我最初的 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());
现在,我有两个问题。
- 这是链接两个 Observable 的正确方法吗?如果没有,我应该怎么做?
- 如果我想为 Api Observable 处理
onError
,我能否在维护链的同时以某种方式做到这一点?如果没有,最好的方法是什么?我真的需要将链分成两组 RxJava 调用吗?
- 你不需要这个:
.subscribeOn(Schedulers.io()) //for the API observable (Do i need this?)
如果您有兴趣可以通过以下代码查看当前线程的 ID:
Thread.currentThread().getId();
其他一切都很好。
- 你应该看看这个:Error-Handling-Operators。在这种情况下,我建议仔细查看
onErrorResumeNext( )
希望对您有所帮助。
假设我想显示服务器上的一些用户数据。我会搜索服务器,缓存它,然后将它呈现给用户。 所以我最初的 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());
现在,我有两个问题。
- 这是链接两个 Observable 的正确方法吗?如果没有,我应该怎么做?
- 如果我想为 Api Observable 处理
onError
,我能否在维护链的同时以某种方式做到这一点?如果没有,最好的方法是什么?我真的需要将链分成两组 RxJava 调用吗?
- 你不需要这个:
.subscribeOn(Schedulers.io()) //for the API observable (Do i need this?)
如果您有兴趣可以通过以下代码查看当前线程的 ID:
Thread.currentThread().getId();
其他一切都很好。
- 你应该看看这个:Error-Handling-Operators。在这种情况下,我建议仔细查看
onErrorResumeNext( )
希望对您有所帮助。