Rx java 关于subscribeWith方法在返回订户时的用法
我想知道为什么Rx java 关于subscribeWith方法在返回订户时的用法,rx-java,Rx Java,我想知道为什么subscribebioth方法返回Subscriber,但不是严格意义上的一次性订阅,或者可能是订阅 我认为subscribeWith方法是为使用RxJava1.x的subscribe方法而设计的,该方法返回订阅。因此,在2.0中,我认为subscribeWith方法的主要用途将是与实现一次性的订户一起使用 然而,由于subscribeWith方法可以返回订阅者,因此可以使用类似主题的用法(例如下面的代码) Subscriber<Long> subscriber =
subscribebioth
方法返回Subscriber,但不是严格意义上的一次性订阅,或者可能是订阅
我认为subscribeWith
方法是为使用RxJava1.x的subscribe
方法而设计的,该方法返回订阅。因此,在2.0中,我认为subscribeWith
方法的主要用途将是与实现一次性的订户一起使用
然而,由于subscribeWith
方法可以返回订阅者,因此可以使用类似主题的用法(例如下面的代码)
Subscriber<Long> subscriber = Flowable.interval(100, TimeUnit.MILLISECONDS)
.subscribeWith(new Subscriber<Long>() {
...
});
...
subscriber.onNext(999);
...
Subscriber=Flowable.interval(100,TimeUnit.ms)
.subscribowith(新订户(){
...
});
...
订户.onNext(999);;
...
这是可以的还是我不应该做的事情?2.x中的订阅服务器不实现一次性,需要包装/劫持每个订阅服务器。您可以取回您订阅的内容,我们有
ResourceSubscriber
和DisposableSubscriber
,它们以正确的方式专门实现了一次性
然而,由于subscribeWith方法可以返回订阅者,因此可以使用类似主题的用法(例如下面的代码)
Subscriber<Long> subscriber = Flowable.interval(100, TimeUnit.MILLISECONDS)
.subscribeWith(new Subscriber<Long>() {
...
});
...
subscriber.onNext(999);
...
不建议这样做,因为您可能同时调用onNext
来违反协议。(这不是由于subscribeWith
导致的,因为您可以预先创建订阅者
,调用subscribe()
,然后以相同的方式对原始订阅者
实例调用onNext()
。)
subscribeWith
确实可以与那些以流畅的方式支持一次性的订阅者合作,并允许以下模式:
CompositeDisposable cd = new CompositeDisposable();
cd.add(source.subscribeWith(new ResourceSubscriber<Integer>() { ... }));
CompositeDisposable cd=new CompositeDisposable();
add(source.subscribeWith(newResourceSubscriber(){…}));
我们的wiki提供了此和其他2.x详细信息。如果您有一个相同的观察者要绑定到不同的观察者,请使用.subscribeWith,以便多个观察者可以使用相同的观察者实现。感谢您的解释!鲍,我肯定这一点。是的,我读过维基,我想
subscribeWith
应该是用来退回一次性的。但是,我检查了subscribeWith
方法,发现它可以返回任何必须与参数类型相同的订阅者。这使我想知道是否还有其他用法。同样,我的代码与subscribeWith
无关。我通常在subscribe
方法中创建一个订户实例,所以我没有说明这种情况。这是RxJava用户应该知道他们不应该做的一件事。它使用observable,但flowable是抛出错误的!!