在RXJava中,我有两个观察点,它们是来自2个下行calls.One下行呼叫的响应是一个长轮询呼叫,另一个是短呼叫并立即返回。我使用Observable.zip来组合两个responses.The的响应,下面的代码运行得很好。
Observable
.zip(observable1, observable2)
.flatMap(update -> foo(update));现在我想实现的是,如果短下行调用(observable1)的输出不包含特定值,那么跳过压缩,即不要等待较长下行调用(observable2)的输出。我尝试用下面的方式实现它,但是如果条件为真,它就不会与observable2一起压缩,但它甚至不会发出observable1响应。
Observable finalresponse = observable1
.takeWhile(obsResponse1 -> checkIfValueExist(obsResponse1))
.zipWith(observable2, (observable1, observable2) -> execute(observable1, observable2))
.flatMap(update -> main.execute(update));发布于 2019-01-29 19:33:15
在压缩包中有一个规则,只有当两个流都发出一个项目时才会返回,所以你需要做的就是过滤或者在observable中返回Observable.empty(),如果你的对象不是你所期望的或者你可以使用过滤器
Observable
.zip(Observable.just(1).filter(integer -> integer==1), Observable.just(2).filter(integer -> integer==3),(integer, integer2) -> integer)
.flatMap(update -> foo(update));https://stackoverflow.com/questions/54408040
复制相似问题