0

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

// 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.subscribe(new ParticularSubscriber<>());

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

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

在后一种情况下,一些包装器被传递给 OnSubscribe。在这个包装器的深处有我最初的 ParticularSubscriber,但我没有能力得到它。

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

4

0 回答 0