我有两个Observable。它们都是Observable<T>
类型。
其中一个是名为initialValueObservable
的冷门,它只是通过Observable.from()
从项目列表中发出。
另一个名为valueUpdateObservable
的热门名称是PublishSubject
,当有新项目时会通知订阅者。
在客户端中,我想同时订阅这两个,因此我从initialValueObservable
获取初始值,并valueUpdateObservable
发布更新。
我最初的方法是将它们合并,但我认为这不会起作用,因为initialValueObservable
将发送onComplete
,此时valueUpdateObservable
所发出的新项目不会被取消到达。
答案 0 :(得分:3)
当您进行合并时,onComplete
仅在所有源可观察对象(在本例中均为完成)完成时发送。
以此(c#Rx.NET)代码为例:
Observable
.Return(42L)
.Merge(Observable.Interval(TimeSpan.FromSeconds(1.0)).Take(3))
.Subscribe(x => Console.WriteLine(x));
它产生:
42
0
1
2
如果RxJava做了不同的事情,我会感到震惊。
答案 1 :(得分:1)
如果有人来找这个,这是一个例子
Observable.concat(
coldObservable.doOnComplete{ () -> Log.d(TAG, "cold observable completed"); },
hotObservable.doOnComplete{ () -> Log.d(TAG, "hot observable completed") }
.subscribe()
将记录所有coldObservable的值,然后记录“cold observable completed”,然后记录所有hotObvservable的值。 “hot observable completed”将不会被记录,假设它类似于没有完成状态的点击监听器