[英]Exit Observable.zip in rxjava based on condition
在RXJava中,我有2個可觀察對象,它們是來自2個下游調用的響應。一個下游調用是長輪詢調用,另一個是短輪詢並立即返回。 我正在使用Observable.zip合並兩個響應的響應。以下代碼可以正常工作。
Observable
.zip(observable1, observable2)
.flatMap(update -> foo(update));
現在,我要實現的是,如果短下游調用(observable1)的輸出不包含特定值,則跳過zip,即不要等待較長下游調用(observable2)的輸出。 我嘗試以以下方式實現它,但是如果條件為true,則它不會與observable2一起壓縮,但它甚至不會發出observable1響應。
Observable finalresponse = observable1
.takeWhile(obsResponse1 -> checkIfValueExist(obsResponse1))
.zipWith(observable2, (observable1, observable2) -> execute(observable1, observable2))
.flatMap(update -> main.execute(update));
在zip中有一條規則,只有當兩個流都將發射一個項目時,它才會返回,因此,如果您的對象不是您期望的對象,或者您可以使用filter,則需要過濾或以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));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.