Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rx java 使用rx的条件查询连接_Rx Java_Reactive Programming_Rx Android - Fatal编程技术网

Rx java 使用rx的条件查询连接

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>

我有以下问题。我从具有属性isMember的服务器请求了一个基本对象。 如果该属性为true,我希望向端点1、2和3发出请求。
如果属性为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;
})...