【问题标题】:RxJava: Publish subject doOnSubscribe never gets calledRxJava:发布主题 doOnSubscribe 永远不会被调用
【发布时间】:2016-08-12 17:32:30
【问题描述】:

我想实现一个简单的场景,当观察者订阅 PublishSubject 时会发生某个动作。

我是这样实现的:

PublishSubject<String>publishSubject=PublishSubject.create();
                publishSubject.doOnSubscribe(new Action0() {
                    @Override
                    public void call() {
                        //do something
                    }
                });

                publishSubject.subscribe(new Observer<String>() {
                @Override
                public void onCompleted() {

                }

                @Override
                public void onError(Throwable e) {

                }

                @Override
                public void onNext(String s) {

                }
            });
                publishSubject.onNext("xyz");

问题是 Action0.call 方法永远不会被调用。

这里有什么问题吗?还是有其他方法可以做到这一点?

【问题讨论】:

    标签: java rx-java reactive-programming rx-android


    【解决方案1】:

    Observable 上的每个运算符都返回另一个 Observable - 它没有改变状态,而是创建了一个新状态。因此,您无需订阅在订阅时间执行操作的可观察对象,而是订阅了主题。

    做吧

    publishSubject
        .doOnSubscribe(() -> doSmth())
        .subscribe();
    

    【讨论】:

      猜你喜欢
      • 2011-04-01
      • 1970-01-01
      • 2012-10-27
      • 2013-10-12
      • 2012-03-27
      • 2013-08-29
      • 2013-11-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多