【问题标题】:Observable composed of cold and hot observablesObservable 由冷和热 observables 组成
【发布时间】:2015-12-24 11:11:52
【问题描述】:

我很难找到合适的方法来组合一个 observable,它将从给定的冷 observable A 发出所有项目,并且一旦它完成,就会继续使用 hot observable B

这是我的特定用例:我有一个数据收集器,它实时将数据附加到仅附加数据库(事件流)。当一个请求到达流所有事件流时,它应该开始从数据库中流式传输所有内容,一旦数据库没有更多数据,它就会开始流式传输任何收集器流......正如你看到的那样,两者都可以作为 observables 使用。

我是响应式编程的新手,因此我的问题可能有点抽象。任何帮助表示赞赏。

这是此行为的图表:

B ----B---B---B----B--B---B---B---X------>
                   |  |   |   |   |
                   |  |   |   |   |
R --A---A--A----?--B--B---B---B---X------>
    |   |  |    |
    |   |  |    |
A --A---A--A----X------------------------>

这里R 是我们的可观察结果,A 是冷的,B 是热的。 RB 结束。

【问题讨论】:

    标签: java reactive-programming rx-java reactive-streams


    【解决方案1】:

    如果 B 很热,那么简单的 A.concat(B) 应该可以工作,因为只有在 A 完成时才会订阅 B。

    【讨论】:

    • 哦,真不敢相信我忽略了这一点:D
    【解决方案2】:

    我怀疑你需要的是 2 个队列,而不是 observables。

    QueueA 具有优先级,而 QueueB 仅在 QueueA 获得退出/消息结束信号时才被处理。

    您认为这种情况可能合适吗?

    【讨论】:

    • 好吧,我不能(而且这似乎不是一个好主意)来改变那些提供 A 和 B 的 api,两者都非常有意义,我肯定可以用一些来做我想做的事使用 PublishSubject 的废话代码,但是我想知道是否有类似 .onErrorContinue() 的东西,但要完成类似 .onCompletionContinue(Observable nextStream)...
    • 这不是我无法实现,只是以正确的方式做到这一点:)
    猜你喜欢
    • 2015-11-18
    • 1970-01-01
    • 1970-01-01
    • 2020-09-14
    • 2018-06-06
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多