【问题标题】:onCompleted not called when using ConnectableObservable and使用 ConnectableObservable 时未调用 onCompleted 和
【发布时间】:2016-12-03 06:13:01
【问题描述】:

鉴于此:

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 和 onCompleted 中收到 1,2,3,4,5,1,2,3,4,5,这也是我所期望的。

对我来说,这两种情况下的行为应该相同,因为所有订阅都发生在第一个示例中调用 .connect() 之前。

有人可以澄清为什么第一个场景的行为不同吗?

【问题讨论】:

  • 在这种特殊情况下,publish() 在第一轮后断开连接,您等待第二轮再次连接。

标签: rx-java reactive-programming


【解决方案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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-13
    • 1970-01-01
    • 2018-03-30
    • 2016-04-17
    相关资源
    最近更新 更多