【发布时间】:2016-10-21 02:29:49
【问题描述】:
我在 Android 上使用 RXJava 并尝试将多个 API 调用链接在一起,并在两个 API 调用完成后执行一些操作。我的 API 调用看起来都与提供的代码示例相似。基本上是做API调用,在onNext中将每条记录写入DB,等所有记录都写入后,更新一些缓存。我想异步触发这两个调用,然后在两者都点击 onCompleted 之后,然后做其他事情。 RX 中执行此操作的正确方法是什么?我认为我不需要 zip,因为我不需要将不同的流捆绑在一起。我在想也许可以合并,但我的两个 API 调用返回了不同类型的 Observable。请告诉我。谢谢。
getUsers()
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.io())
.flatMap(Observable::from)
.subscribe(new Subscriber<User>() {
@Override
public void onCompleted() {
updateUserCache();
}
@Override
public void onError(Throwable e) {
Log.e(TAG, "Error loading users", e);
}
@Override
public void onNext(User user) {
insertUserToDB(user);
}
});
getLocations()
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.io())
.flatMap(Observable::from)
.subscribe(new Subscriber<Location>() {
@Override
public void onCompleted() {
updateLocationCache();
}
@Override
public void onError(Throwable e) {
Log.e(TAG, "Error loading Locations", e);
}
@Override
public void onNext(Location location) {
insertLocationToDB(location);
}
});
【问题讨论】:
标签: java android rx-java reactive-programming rx-android