gpt4 book ai didi

java - RxJava 棘手的 startWith(Observable)

转载 作者:搜寻专家 更新时间:2023-11-01 07:45:31 25 4
gpt4 key购买 nike

以下代码仅在 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

仅当第一个 observable 为空时,第二个 observable 才发射项目,然后发射第一个 observable 的项目。

我无法仅使用基本运算符找到正确的解决方案,自定义运算符 startWithDefault 的正确 RxJava 2 实现应该是什么样子?

附言

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

不是正确的解决方案,因为在从 observable1 立即发出的情况下存在竞争

最佳答案

方向很好,但是您需要publish(Function) 来共享observable1 的信号和concatEager 来不丢失其中的元素当开关出现时:

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

关于java - RxJava 棘手的 startWith(Observable),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45173252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com