【发布时间】:2020-10-02 19:11:19
【问题描述】:
我正在尝试在一个地方声明我的所有订阅,并且没有任何中间中继或触发器。这就是我想要实现的目标。
我有一个Signal<X>,它只会在其他所有内容都加载完毕并且工作正常后才会开始接收值。但是现在我需要介绍另一个Observable<Y>,当我订阅它时,它会立即开始发出值,因为它正在从数据库中获取数据。这有点问题,因为我的 UI 还没有准备好显示结果,并且只有在 Signal<X> 发出它的第一个值时才准备好。在此之后,我想收到Observable<Y> 将收到的每一个值。
我正在尝试使用skipUntil,这很好,但我丢失了Observable<Y> 的第一个元素。 switchLatest 也不是很好的匹配。我也在研究amb,但这也不会给我正确的结果,因为它订阅了两个序列,这不是我需要的。
我的问题是:只有在原始 Observable 收到一个值之后,是否有可能订阅其他 Observable?并保持此订阅有效,以便它对新值做出反应。
【问题讨论】:
-
skipUntil 完全符合您的需要,您从 Observable
中丢失第一个元素是什么意思? -
你在这里没有提供很多细节。 “在加载完其他所有内容之后”是什么意思?这是否意味着在调用 viewDidLoad 时 X 会发出?
X到底是什么,你需要它来创建Y吗?X是否多次发射?您说Observable<Y>从数据库中获取值,但随后暗示它发出多次。这是本地数据库还是网络请求?