以下代码仅在observable2完成后才从observable1中发出项目。
<td class="text-center" ng-repeat="(key1,value1) in value">
{{value1["95-95"]["Test Statistic"]}}
</td>
<td class="text-center" ng-repeat="(key1,value1) in value">
{{value1["95-95"]["P-Value"]}}
</td>
<td class="text-center" ng-repeat="(key1,value1) in value">
{{value1["95-95"]["Test Outcome"]}}
</td>
我需要实现另一种行为
observable1.startWith(observable2)
.subscribe()
第二个observable仅在第一个observable为空时发出项目,然后从第一个observable中发出项目。
我只能使用基本运算符找不到正确的解决方案,自定义运算符startWithDefault的RxJava 2实现应该是什么样的?
P.S。
observable1 -> 0 1 2 3
observable2 -> 1 2 3 4 5 6
observable1.startWithDefault(observable2)
-> 1 2 0 1 2 3
是正确的解决方案,因为在observable1立即发出的情况下种族
答案 0 :(得分:4)
方向很好,但您需要publish(Function)
分享observable1
的信号,concatEager
以便在交换机出现时不丢失元素:
observable1.publish(o ->
Observable.concatEager(observable2.takeUntil(o), o)
)
.subscribe(...)