【问题标题】:RXJava : wait until other observable has completedRXJava : 等到其他 observable 完成
【发布时间】:2018-06-29 07:15:02
【问题描述】:

我对 RX 世界比较陌生。所以,有很多我不明白的运营商。我花了几个小时来找出我的问题的解决方案。

这是:

我有一个 'cold' observable(observable I),它只发出一个结果。它用于在应用程序加载其他项目之前加载一些初始数据来显示

另一方面,我有另一个'hot' observable(observable II),它正在通过分页加载数据,因此会发出许多结果。

我希望 observable II 等待 observable I。如果在 observable II 创建的那一刻,observable I 已经完成,我希望 observable II 不再加载初始数据。 p>

可视化:

  Case 1

  Observable I  [---------------------------------------------------]

  Observable II  .................[----------------------------------------

这里observablee II应该等待observable I,然后才继续工作。

  Case 2 

  Observable I   [--------]

  Observable II ...............[----------------------------------------

这里observable II应该只检查observable I是否完成并继续工作

在这两种情况下,observable I 的执行不应超过一次。

问题:

如何使用 RX 组合运算符做到这一点?

【问题讨论】:

    标签: rx-java rx-java2 rx-android


    【解决方案1】:

    您可能想在此处使用concatconcatWith。操作员也一样,只是静态方法与非静态方法。

    假设你有result = obs1.concatWith(obs2);这个运算符的作用是:

    1. 它订阅obs1 并发出它从onNext 接收到的所有元素。
    2. 一旦obs1 调用onCompleted,它就会取消订阅obs1 并订阅obs2。它同样会发出它从obs2onNext 接收到的所有元素。
    3. 一旦obs2 调用onCompleted,它也会调用onCompleted,因为不会有更多元素来自Observable

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-22
    • 2018-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多