我一直在看新的 rx java 2,我不太确定我理解的想法 backpressure
了..。
我知道我们有 Observable
没有 backpressure
的支持和 Flowable
有它。
基于这个例子,假设我有 flowable
和 interval
:
Flowable.interval(1, TimeUnit.MILLISECONDS, Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<Long>() {
@Override
public void accept(Long aLong) throws Exception {
// do smth
}
});
这将在大约128个值之后崩溃,很明显,我的消费速度比得到物品的速度慢。
但是 Observable
也是一样的
Observable.interval(1, TimeUnit.MILLISECONDS, Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<Long>() {
@Override
public void accept(Long aLong) throws Exception {
// do smth
}
});
这将不会崩溃在所有,即使当我把一些延迟消费它仍然工作。为了使 Flowable
工作,让我们说我把 onBackpressureDrop
操作符,崩溃消失了,但并非所有的值都被发出。
因此,基本问题,我无法找到答案目前在我的头脑是,为什么我应该关心的 backpressure
时,我可以使用普通的 Observable
仍然接收所有的值而不管理的 buffer
?或者也许从另一方面来说,backpressure
在管理和处理消费方面给了我什么优势?