RxJava 2-如何比较concat的第一和第二结果

时间:2019-01-23 10:37:38

标签: android rx-java2 concat

我正在尝试使用concat()运算符来获取数据库和网络的结果,并对每个结果对象执行一组操作。

但是,我有一些操作只能执行一次,即一旦获得第一个成功的结果,如果其他结果与第一个不同,则应跳过这些操作,或者如果第一个结果不成功,则应将其跳过完成第二个结果。

我不想阻止任何依赖于任何数据库或网络结果的运算符,每当有每个结果可用时,都应立即进行操作。

现在,我创建了一个示例项目,并且我有这样的东西:

display

目前,以上代码的结果将是:

<mat-tab-group>
  <mat-tab label="First" #firstTab>
  </mat-tab>
  <mat-tab label="Second" #secondTab></mat-tab>
</mat-tab-group>
<div [ngStyle]="{'display':!firstTab.isActive ? 'none' : null}">First</div>
<div [ngStyle]="{'display':!secondTab.isActive ? 'none' : null}">Second</div>

我想要上面的代码:

  val flowable1 = Flowable.just(1)
  val flowable2 = Flowable.just(2).delay(2, TimeUnit.SECONDS)

  Flowable.concat(flowable1, flowable2)
                .map {
                    //operation that should be done every time
                    Log.d("TAG", "Printing result=$it")
                    return@map it
                }
                .map {
                    //it should also be different than previous result (it)
                    //this operation should only be done when there is a 
                    //valid result but only once                    
                    if(it != 0) {
                        Log.d("TAG", "Printing only once=$it")
                    }
                    return@map it
                }
                .subscribe {
                    Log.d("TAG", "Printing the results=$it")
                }


有谁知道我该怎么做地图运算符才能将第二个地图运算符打印一次,比较第一个Int结果不等于最新结果?

0 个答案:

没有答案