what is Rx
ReactiveX是Reactive Extensions缩写,由微软团队开发,简写为Rx,目标是提供统一的接口,帮助开发者更方便处理异步数据流,很多种语言都有实现,例如RxNet,RxJava,RxJS等
Reactive Programing(响应式编程)
Rx提供了一系列操作符,可以用来创建,组合,过滤,转化多个Observable
why Rx
函数式风格:对可观察数据流使用无副作用的输入输出函数,避免了程序里错综复杂的状态
简化代码:Rx的操作符通通常可以将复杂的难题简化为很少的几行代码
异步错误处理:传统的try/catch没办法处理异步计算,Rx提供了合适的错误处理机制
轻松使用并发:Rx的Observables和Schedulers让开发者可以摆脱底层的线程同步和各种并发问题
Rx扩展了观察者模式用于支持数据和事件序列,可以声明式组合这些序列。Observable通过最佳方式访问异步事件序列。Rx的Obserable模型可以让你像访问集合数据一样操作异步数据流
同步 T getData() Iterable<T> getData()
异步 Observable<T> getData()
相关对象
- Observable 可观赛对象,cold hot
一个观察者订阅一个可观察对象 (An observer subscribes to an Observable)。通过调用观察者的方法,Observable发射数据或通知给它的观察者。 - Observer
- Subject
- Scheduler
- Operators
rxjs:library for composing asynchrounous and event-based programs by using observable seq.
observable: collection+time
常用操作符
1:create operators 创建操作符
create
from
fromEvent
of
timer
2:condition operators 条件操作符
every
3:combination operators 组合操作符
merge
concat
concatAll
4:transforation operators 转化操作符
map
mapTo
mergeAll
mergerMap
pluck
swithMap
5:filter operators 过滤操作符
take
takeUntil
takeWhile
debounce
debounceTime
throttle
throttleTime
marble diagram
when Rx
叁考:
https://mcxiaoke.gitbooks.io/rxdocs/content/Intro.html
https://rxjs.dev/
https://reactive.how/rxjs/
https://ithelp.ithome.com.tw/articles/10186103