RXJX编程模式
RXJX概念
Observable可被观察者
- 观察者模式(Observer Pattern)
- 如何产⽣事件, 这是发布者的责任, 在RxJS中是Observable对象的⼯作
- 如何响应事件, 这是观察者的责任, 在RxJS中由subscribe的参数来决定
- 迭代器模式(Iterator Pattern)
Hot Observable 与 Cold Observable
如果每次订阅的时候, 已经有⼀个热的“⽣产者”准备好了, 那就
是Hot Observable, 相反, 如果每次订阅都要产⽣⼀个新的⽣产者, 新的⽣
产者就像汽车引擎⼀样刚启动时肯定是冷的, 所以叫Cold Observable。Observer 数据流的消费者
//Observable.subscribe(Observer)const onSubscribe = observer => {let number = 1;const handle = setInterval(() => {console.log('in onSubscribe ', number);observer.next(number++);}, 1000);return {unsubscribe: () => {//clearInterval(handle);}};};const source$ = new Observable(onSubscribe);const subscription = source$.subscribe(item => console.log(item));setTimeout(() => {subscription.unsubscribe();}, 3500)
操作符简介
对于现实中复杂的问题, 并不会创造⼀个数据流之后就直接通过subscribe接上⼀个Observer, 往往需要对这个数据流做⼀系列处理, 然后才交给Observer。 就像⼀个管道, 数据从管道的⼀段流⼊, 途径管道各个环节, 当数据到达Observer的时候, 已经被管道操作过, 有的数据已经被中途过滤抛弃掉了, 有的数据已经被改变了原来的形态, ⽽且最后的数据可能来⾃多个数据源, 最后Observer只需要处理能够⾛到终点的数据;

在RxJS中, 作为迭代器的使⽤者, 并不需要主动去从Observable
中“拉”数据, ⽽是只要subscribe上Observable对象之后, ⾃然就能够收到消
息的推送, 这就是观察者模式和迭代器两种模式结合的强⼤之处
