在订阅期间识别订阅者

时间:2016-07-15 17:18:28

标签: java rx-java reactivex

假设我有一些订阅者实现:

// SafeSubscriber extension doesn't matter here - the problem exists for simple Subscriber implementations too
class ParticularSubscriber<T> extends SafeSubscriber<T> {

    private Subscriber<T> actual;

    public ParticularSubscriber() {
        super(Subscribers.create(System.out::println));
    }
}

然后,我需要创建一个观察者,根据传递的订阅者执行一些额外的配置。天真的方法首先:

Observable<String> o = Observable.<String>create(subscriber -> {
    if(subscriber instanceof ParticularSubscriber) {
        // do some extra logic here.
    }
});

如果我们直接订阅Observable o:

,它就能成功运作
o.subscribe(new ParticularSubscriber<>());

但是如果我们对其应用一些操作,情况会发生变化:

o.map(str -> str + 1)
        .filter(str -> str != "")
        .subscribe(new ParticularSubscriber<>());

在后一种情况下,将一些包装器传递给OnSubscribe。在这个包装器的内部,有我最初的ParticularSubscriber,但是我没有能力去做它。

有没有办法在观察者的回调中访问最初传递的订阅者?

0 个答案:

没有答案