Android Rxjava 2组合测试错误

Android Rxjava 2组合测试错误,android,rx-java,reactive-programming,rx-java2,observer-pattern,Android,Rx Java,Reactive Programming,Rx Java2,Observer Pattern,我想收集两个方法调用的第一次发射,这可以使用RxJava2的CombineTest实现,但我对语法感到困惑 Observable<Boolean> buildUseCaseObservable(Params params) { List<Observable> list = new ArrayList<>(); list.add(this.userRepository.fetchUserData()); list

我想收集两个方法调用的第一次发射,这可以使用RxJava2的CombineTest实现,但我对语法感到困惑

    Observable<Boolean> buildUseCaseObservable(Params params) {
    List<Observable> list = new ArrayList<>();        
    list.add(this.userRepository.fetchUserData());
    list.add(this.masterDataRepository.fetchLov());

    //I think the problem is in the syntax
    return Observable.combineLatest(list, new BiFunction<Boolean, Boolean, Boolean>() {
        @Override
        public Boolean apply(Boolean aBoolean, Boolean aBoolean2) throws Exception {
            System.out.println("FetchRegistrationData complete " + aBoolean + " " + aBoolean2);
            return aBoolean && aBoolean2;
        }
    });

    /* this works fine but it waits for onComplete() of both calls
    return Observable.zip(
            this.userRepository.fetchUserData(),
            this.masterDataRepository.fetchLov(),
            new BiFunction<Boolean, Boolean, Boolean>() {
                @Override
                public Boolean apply(@NonNull Boolean aBoolean, @NonNull Boolean aBoolean2) throws Exception {
                    System.out.println("FetchRegistrationData complete " + aBoolean + " " + aBoolean2);
                    return aBoolean && aBoolean2;
                }
            });*/
     }
可观察的buildUseCaseObservable(Params-Params){
列表=新的ArrayList();
list.add(this.userRepository.fetchUserData());
添加(this.masterDataRepository.fetchLov());
//我认为问题在于语法
返回Observable.CombineTest(列表,新的双函数(){
@凌驾
公共布尔应用(布尔aBoolean,布尔aBoolean2)引发异常{
System.out.println(“FetchRegistrationData complete”+aBoolean+“”+aBoolean2);
返回aBoolean&&aBoolean 2;
}
});
/*这可以正常工作,但它会等待两个调用的onComplete()
return-Observable.zip(
this.userRepository.fetchUserData(),
this.masterDataRepository.fetchLov(),
新的双函数(){
@凌驾
公共布尔应用(@NonNull Boolean aBoolean,@NonNull Boolean aBoolean 2)引发异常{
System.out.println(“FetchRegistrationData complete”+aBoolean+“”+aBoolean2);
返回aBoolean&&aBoolean 2;
}
});*/
}

您可以使用
take()
操作符限制可观察对象的数量。这意味着,一旦两个可观察对象都发出一个值,
combinerFunction
将计算一个结果,可观察对象将完成

return Observable.combineLatest(
  this.userRepository.fetchUserData().take(1),
  this.masterDataRepository.fetchLov().take(1),
  combinerFunction)

您可以使用
take()
操作符限制可观察对象的数量。这意味着,一旦两个可观察对象都发出一个值,
combinerFunction
将计算一个结果,可观察对象将完成

return Observable.combineLatest(
  this.userRepository.fetchUserData().take(1),
  this.masterDataRepository.fetchLov().take(1),
  combinerFunction)

那么.firstOrError()呢?请阅读特定的
CombineTest
方法的方法签名。我认为.firstOrError()给出了单个可观察对象发出的第一项。我有一个可观察对象的列表(特别是两个)。那么.firstOrError()呢?请阅读该特定
combinelateTest
方法的方法签名。我认为.firstOrError()给出了单个可观察对象发出的第一项。我有一个可观察的列表(特别是两个)。