2017-03-03 35 views

回答

3

由于您想让第一个数据完成,您必须将数据放到某个位置,直到您将终端事件收集到自己的列表中并使用amb来挑选发出事件信号的来源(收集的清单)。然后,您可以将列表展开回单个项目。

Observable<A> source1 = ... 
Observable<A> source2 = ... 

Observable.amb(source1.toList(), source2.toList()) 
.flatMapIterable(list -> list) 
.subscribe(...); 
0

您正在查找的操作员是first。当然,你必须首先合并Observables(通过使用merge,或者更好 - mergeDelayError,所以如果其中只有一个失败,你仍然会得到第一个以vaild结果结束的)。

应该像这样:

Observable.mergeDelayError(pushObservable, pullObservable) 
     .first() 
     .subscribe(data->...); 
相关问题