使用ConnectableObservable和时未调用onCompleted

时间:2016-12-02 18:40:20

标签: rx-java reactive-programming

鉴于此:

TestSubscriber subscriber = new TestSubscriber();

ConnectableObservable<Integer> observable = Observable.just(1,2,3,4,5).publish();

observable.startWith(observable).subscribe(subscriber);

observable.connect();

订阅者在onNext中收到1,2,3,4,5但未收到onCompleted。

如果我将代码更改为:

Observable.just(1,2,3,4,5).replay()

然后订户收到onNext中的1,2,3,4,5,1,2,3,4,5然后onCompleted也是我所期望的。

对我而言,它在两种情况下都应该表现相同,因为所有订阅都是在第一个示例中调用.connect()之前发生的。

有人可以澄清为什么第一种情况表现不同吗?

1 个答案:

答案 0 :(得分:1)

我认为您的问题与此相关 - observable.startWith(observable)。它告诉observable在开始发出所有项目之前发出所有项目。

尝试删除该部分 -

TestSubscriber subscriber = new TestSubscriber();

ConnectableObservable<Integer> observable = Observable.just(1,2,3,4,5).publish();
observable.subscribe(subscriber);
observable.connect();