RxJava1.0 vs RxJava2.0
1. RxJava1.0
RxJava核心
– 链式编程,响应式编程是RxJava 设计的初衷,核心设计模式是观察者模式。
2. RxJava2.0
2.0 版本中出现了两种观察者模式:
- Observable(被观察者) / Observer(观察者)
- Flowable(被观察者) / Subscriber(观察者)
Observable用于订阅Observer是不支持背压的,而Flowable用于订阅Subscriber 是支持背压的。
什么是背压
背压是指在异步场景中,被观察者发送事件速度远快于观察者的处理速度的情况下,一种告诉上游的被观察者降低发送速度的策略。
简而言之,背压是流速控制的一种策略。
背压需要强调两点:
- (异步环境)背压策略的一个前提是异步环境,即被观察者和观察者处在不同的线程环境中。
- (控制事件流速)背压(BackPressure)并不是一个像flatMap一样可以做程序中直接使用的操作符,他只是一种控制事件流速的策略。
流速控制相关的操作符
- 过滤(抛弃)sample,ThrottleFirst
- 缓存 buffer,window…
两个特殊操作符
onBackPressureBuffer, onBackPressureDrop
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Qin Blog!