簡體   English   中英

根據條件退出rxjava中的Observable.zip

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM