Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.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
Rxjava使用Zip操作符_Java_Rx Java - Fatal编程技术网

Rxjava使用Zip操作符

Rxjava使用Zip操作符,java,rx-java,Java,Rx Java,我使用zip将2 Observable与以下代码合并 Observable<boolean> one = someMethod(); Observable<String> two = someMethod2(), Observable.zip(one, two, new Func2<boolean, String, newPojo>() { @Override public MyResult call(boolean ix,

我使用zip将2 Observable与以下代码合并

 Observable<boolean> one = someMethod();
 Observable<String> two = someMethod2(),
 Observable.zip(one, two, 

new Func2<boolean, String, newPojo>() {

  @Override
  public MyResult call(boolean ix, 
      String asd) { 
      return myResult;
     }
  }
 )
Observable one=someMethod();
可观测的2=someMethod2(),
可观察的。zip(一,二,
新功能2(){
@凌驾
公共MyResult调用(布尔ix,
字符串asd){
返回我的结果;
}
}
)
这工作做得很好。但现在我想做的是如果

Observable<boolean> one = someMethod();
Observable one=someMethod();
一个返回值为真,然后只进行两次调用,否则不要进行任何两次调用。
我怎么能做到

使用
flatMap

one.flatMap(bool -> {
    if (bool) {
        return two;
    }
    return Observable.empty();
})

使用
flatMap

one.flatMap(bool -> {
    if (bool) {
        return two;
    }
    return Observable.empty();
})

组合使用
filter
flatMap
就可以了

one.filter(aBoolean -> aBoolean)
      .flatMap(aBoolean -> two)
      .subscribe(theString -> {});
具有zipWith()的解


组合使用
filter
flatMap
就可以了

one.filter(aBoolean -> aBoolean)
      .flatMap(aBoolean -> two)
      .subscribe(theString -> {});
具有zipWith()的解


Zip运算符用于进行并行调用。 您可以使one函数返回一个空的observable而不是false,然后应用switchiffempty()执行observable two

one
.switchIfEmpty(two)
.subscribe()

Observable<Boolean> one = someMethod(){
//your code
if(condition == true){
return Observable.just(true)
}
else{
return Observable.empty()
}

}
1
.switchIfEmpty(两个)
.subscribe()
可观察的一个=someMethod(){
//你的代码
如果(条件==真){
返回可观察。仅(真)
}
否则{
返回可观察的.empty()
}
}

Zip运算符用于进行并行调用。 您可以使one函数返回一个空的observable而不是false,然后应用switchiffempty()执行observable two

one
.switchIfEmpty(two)
.subscribe()

Observable<Boolean> one = someMethod(){
//your code
if(condition == true){
return Observable.just(true)
}
else{
return Observable.empty()
}

}
1
.switchIfEmpty(两个)
.subscribe()
可观察的一个=someMethod(){
//你的代码
如果(条件==真){
返回可观察。仅(真)
}
否则{
返回可观察的.empty()
}
}

zip()
将始终并行迭代,afaik
zip()
将始终并行迭代,afaik但我还需要一个和两个值,当两个值被触发时,我还需要一个和两个值,当两个值被触发时