簡體   English   中英

RxJava棘手的startWith(Observable)

[英]RxJava tricky startWith(Observable)

以下代碼僅在observable2完成后才從observable1發出項目。

observable1.startWith(observable2)
           .subscribe()

我需要實現另一種行為

observable1 ->       0   1   2   3
observable2 -> 1   2   3   4   5   6

observable1.startWithDefault(observable2)
            -> 1   2 0   1   2   3

第二個可觀察對象僅在第一個可觀察對象為空時才發射項目,然后才發射第一個可觀察對象的項目。

我僅使用基本運算符找不到正確的解決方案,自定義運算符startWithDefault的正確RxJava 2實現應該是什么樣?

PS

observable1.subscribe()
observable2.takeUntil(observable1).subscribe()

由於比賽而無法觀察到的結果是不正確的解決方案

方向是好的,但是您需要publish(Function)共享observable1的信號,並且concatEager不能在開關出現時從中丟失元素:

observable1.publish(o -> 
    Observable.concatEager(observable2.takeUntil(o), o)
)
.subscribe(...)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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