java - 寻找 Rxjava 运算符将源合并到一个流中

标签 java android rx-java rx-java2

寻找 Rxjava 运算符将源合并到一个流中 目前有这个

  Disposable observable = Observable.concat(
                service.loadPopCells().toObservable(),
                service.loadChallangeData().toObservable(),
                service.loadUserCell().toObservable()
        )              
  .subscribe(data->sendtoViewmodel(data)); // called 3 times

我有3个流,所以订阅被调用了三次,但我希望它被所有数据调用一次

希望得到这样的东西

    Disposable observable = Observable.concat(
                service.loadPopCells().toObservable(),
                service.loadChallangeData().toObservable(),
                service.loadUserCell().toObservable()
        )
        // i want to achieve something like this 
        .mapallresult(data,data2,data3){ 
         private List<SimpleCell> shots = new ArrayList<>();
         shots.add(data);
         shots.add(data2);
         shots.add(data2);
         return shots;  }
         ///
         .subscribe(dataList->sendtoViewmodel(dataList); // called once 

最佳答案

zip 运算符将帮助您:

Observable.zip(
        service.loadPopCells().toObservable(),
        service.loadChallangeData().toObservable(),
        service.loadUserCell().toObservable(),
        (data1, data2, data3) -> Arrays.asList(data1, data2, data3))
        .subscribe(dataList -> sendtoViewmodel(dataList));
    }

或者更短:

Observable.zip(
    service.loadPopCells().toObservable(),
    service.loadChallangeData().toObservable(),
    service.loadUserCell().toObservable(),
    Arrays::asList)
    .subscribe(this::sendtoViewmodel);

关于java - 寻找 Rxjava 运算符将源合并到一个流中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47428777/

相关文章:

java - AES密文不同

安卓应用程序: Preference Activity Crashing

android - RxJava 网络请求和缓存

java - Spring 中新线程上的 Rx java 本地化问题

java - 有没有纯Java的手势识别框架?

java - 使用 SIM2 发送消息

java - 隐式与显式数据结构

java - 当实现仅在一个方法上不同时,建议使用哪种设计模式?

android - MPAndroidChart 避免数据点的标签裁剪

java - RxJava 适合分支工作流程吗?