1.Rxjs基本概念
从接触Angular2开始,一直在使用Rxjs但没有深究,最近抽空整体了解下Rxjs,略作整理。Rxjs可以理解为一个管理事件或任务序列(异步)的库,它提供了一个核心类型Observable可观察对象,卫星类型(围绕于Observable): Observer、Scheduler、Subject和操作符。这几个概念可以用下图来举例说明(windows画图工具随便画的,粗糙了些,示意还是清晰的):
Observable 可观察对象:是一串事件或消息的集合,在图中列举了一个需要发送一串数字序列的可观察对象。
Observer 观察者:是一组回调函数,用来处理Observable中的内容。在图中它接收了一串数字序列。
Subscription 订阅:Observable的执行,功能好比一个开关,可以订阅或取消订阅。在图中,如果订阅则它下游的Observer将收到数字;取消订阅,下游的Observer将收不到任何消息。一个Observable可以被多个Observer订阅。
Subject 主题:将Observable中的内容广播到多个Observer。在图中相当于一个多分支开关,如果主题被订阅则所有观察者都将收到同样的一串数字序列。
Scheduler 调度者:决定何时启动订阅和何时发送通知。如图所示,调度者不是必须的。在图中数字序列从Observable发出,经过调度,序列的顺序被改变了。
文中示例的Angular及Rxjs版本:
2.Rxjs简单示例
3.Observable可观察对象
可观察对象是一串消息或事件的集合,可以发送多值。在“Rxjs简单示例“中可以看到,使用Observale.create创造了一个可观察对象myobservable,在里面首先发送1,2,3三个值