我想知道为什么该subscribeWith方法会返回Subscriber而不是严格讲Disposable或Subscription。
我认为该subscribeWith方法是为使用RxJava 1.x的subscribe返回Subscription 的方法而设计的。因此,在2.0中,我认为subscribeWithmethod 的主要用法将是与实现Disposable的Subscriber一起使用。
但是,由于该subscribeWith方法可以返回订阅服务器,因此可能会发生类似主题的用法(例如以下代码)。
Subscriber<Long> subscriber = Flowable.interval(100, TimeUnit.MILLISECONDS)
.subscribeWith(new Subscriber<Long>() {
...
});
...
subscriber.onNext(999);
...
Run Code Online (Sandbox Code Playgroud)
这样可以还是我不应该做的事情?
2.x中的订户未实现Disposable,并且需要包装/劫持每个订户。您会得到您所订阅的内容以及我们拥有的内容,ResourceSubscriber并且将以正确的方式DisposableSubscriber具体实施Disposable。
但是,由于subscribeWith方法可以返回订阅服务器,因此可能会发生类似主题的用法(例如以下代码)。
不建议这样做,因为您可能onNext同时调用而违反了协议。(这不是这样做的结果,subscribeWith因为您可以预先创建Subscriber,调用subscribe(),然后以相同的方式onNext()对Subscriber违反协议的原始实例进行调用。)
subscribeWith 实际上,我们是否可以与流畅地支持Disposable并允许以下模式的订阅者合作:
CompositeDisposable cd = new CompositeDisposable();
cd.add(source.subscribeWith(new ResourceSubscriber<Integer>() { ... }));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3599 次 |
| 最近记录: |