我是相对较新的RX世界。所以,有很多运算符我不明白。我花了几个小时来解决我的问题。
即:
我有一个‘冷’可观察的(可观测到的I),它只发出一个结果。它用于在应用程序加载其他要显示的项之前加载一些初始数据。
另一方面,我有另一个“热”可观测的(观察者II),它用分页加载数据,因此产生了许多结果。
我希望可观测II等待可观测到的I。如果在创建可观测II时,可观察到的I已经完成,我希望可观测II不再加载初始数据。
形象化:
Case 1
Observable I [---------------------------------------------------]
Observable II .................[----------------------------------------在这里,观测II应该等待可观察到的I,然后才能继续工作。
Case 2
Observable I [--------]
Observable II ...............[----------------------------------------在这里,可观测II只应检查可观测I是否完成并继续工作。
在这两种情况下,可观察到的I的执行不应该超过一次。
问题:
如何使用RX组合运算符来完成此操作?
发布于 2018-01-20 11:10:12
您可能想在这里使用concat或concatWith。操作符也是这样做的,它只是静态的和非静态的方法。
假设您得到了result = obs1.concatWith(obs2);这个操作符所做的是:
obs1并发出从其onNext接收到的所有元素。obs1调用了onCompleted,它就从obs1取消订阅并订阅obs2。同样,它将发出从obs2的onNext接收到的所有元素。obs2调用了onCompleted,它也会调用onCompleted,因为任何一个Observable都不会产生更多的元素。https://stackoverflow.com/questions/48351391
复制相似问题