Rx java 使用rx的条件查询连接
我有以下问题。我从具有属性isMember的服务器请求了一个基本对象。 如果该属性为true,我希望向端点1、2和3发出请求。Rx java 使用rx的条件查询连接,rx-java,reactive-programming,rx-android,Rx Java,Reactive Programming,Rx Android,我有以下问题。我从具有属性isMember的服务器请求了一个基本对象。 如果该属性为true,我希望向端点1、2和3发出请求。 如果属性为false,我只想向端点1发出请求 我在下面写了一个用例的基本示例,其中包含了所有相关的类 显示程序流程。此问题的相关部分在注释中的UserViewModel::loadData中 我不知道如何实现这一点与Rx…你能给我一些提示,你会怎么做 干杯 interface Controller { Observable<BaseInfoDto>
如果属性为false,我只想向端点1发出请求 我在下面写了一个用例的基本示例,其中包含了所有相关的类 显示程序流程。此问题的相关部分在注释中的UserViewModel::loadData中 我不知道如何实现这一点与Rx…你能给我一些提示,你会怎么做 干杯
interface Controller {
Observable<BaseInfoDto> getBaseInfo(long id);
Observable<AccountDto> getAccount(long id);
Observable<MemberFriendsDto> getFriends(long id);
Observable<MemberLikesDto> getLikes(long id);
}
…只是为了完整
interface ThreadManager {
Thread getMainThread();
}
根据
isMember
结果使用flatMap
:
controller
.getBaseInfo(userModel.getId())
.flatMap(info -> {
if (info.isMember())
return endpoint1
.mergeWith(endpoint2)
.mergeWith(endpoint3);
else
return endpoint1;
})...
class UserDetailsView {
private final long selectedUser;
private final ThreadManager threadManager;
private final UserViewModel viewModel;
public UserDetailsView(long selectedUser, ThreadManager threadManager) {
this.selectedUser = selectedUser;
this.threadManage = threadManager;
viewModel = new UserViewModel(selectedUser);
}
void onViewInstantiated() {
// lots of stuff happens
loadUserData();
}
private void loadUserData() {
viewModel.loadData()
.observeOn(threadManager.getMainThread())
.subscribe(this::showError, this::bindUserData);
}
private void showError() {
// foo
}
private void bindUserData() {
// bar
}
}
interface ThreadManager {
Thread getMainThread();
}
controller
.getBaseInfo(userModel.getId())
.flatMap(info -> {
if (info.isMember())
return endpoint1
.mergeWith(endpoint2)
.mergeWith(endpoint3);
else
return endpoint1;
})...