首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RXJava :等到其他可观察到的

RXJava :等到其他可观察到的
EN

Stack Overflow用户
提问于 2018-01-20 00:27:08
回答 1查看 4.6K关注 0票数 2

我是相对较新的RX世界。所以,有很多运算符我不明白。我花了几个小时来解决我的问题。

即:

我有一个‘冷’可观察的(可观测到的I),它只发出一个结果。它用于在应用程序加载其他要显示的项之前加载一些初始数据。

另一方面,我有另一个“热”可观测的(观察者II),它用分页加载数据,因此产生了许多结果。

我希望可观测II等待可观测到的I。如果在创建可观测II时,可观察到的I已经完成,我希望可观测II不再加载初始数据。

形象化:

代码语言:javascript
复制
  Case 1

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

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

在这里,观测II应该等待可观察到的I,然后才能继续工作。

代码语言:javascript
复制
  Case 2 

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

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

在这里,可观测II只应检查可观测I是否完成并继续工作。

在这两种情况下,可观察到的I的执行不应该超过一次。

问题:

如何使用RX组合运算符来完成此操作?

EN

回答 1

Stack Overflow用户

发布于 2018-01-20 11:10:12

您可能想在这里使用concatconcatWith。操作符也是这样做的,它只是静态的和非静态的方法。

假设您得到了result = obs1.concatWith(obs2);这个操作符所做的是:

  1. 它订阅obs1并发出从其onNext接收到的所有元素。
  2. 一旦obs1调用了onCompleted,它就从obs1取消订阅并订阅obs2。同样,它将发出从obs2onNext接收到的所有元素。
  3. 一旦obs2调用了onCompleted,它也会调用onCompleted,因为任何一个Observable都不会产生更多的元素。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48351391

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档