Observable,数据的源头,负责产生及发送数据。
1,特性:
- 可以处理同步和异步任务;
- 订阅/取消数据流;
- 发送值给observer;
- 当执行到.subscribe()的时候, Observable才开始推送数据
2,流程
第一步是创建,然后使用Observer来订阅它,然后执行并发送next/error/complete来通知Observer,而且执行可能会被清理;
- 创建Observables
- 订阅Observables
- 执行Observables
- 清理Observables
3.1,创建
- Create - 返回一个可以在Observer上调用方法的Observable,它是是 Observable 构造函数的别名,它接收一个参数:subscribe 函数,不是操作符
- Defer - 在观察者订阅之前不要创建Observable,并为每个观察者创建一个新的Observable
- Empty/ Never/Throw - 创建具有非常精确和有限行为的Observable
- From/Of - 将可迭代对象转换为Observable
- Interval - 创建一个Observable,它发出一系列以特定时间间隔隔开的整数
- Just - 将对象或一组对象转换为发出该对象或那些对象的Observable,等同于return
- Range - 创建一个Observable,它发出一系列连续的整数
- Repeat - 创建一个Observable,重复发出特定项目或项目序列,第二个参数为次数。dowhile和while 可以实现相同的功能
- Timer - 创建一个Observable,在给定的延迟后发出单个项目
- ==略
3.2,订阅
用observable.subscribe(cb)来订阅observable,表示cb订阅了observable。
3.3,执行
Observable.create(function subscribe(observer) {...}) 中...的代码表示 “Observable 执行”,它是惰性运算,只有在每个观察者订阅后才会执行。随着时间的推移,执行会以同步或异步的方式产生多个值。
3.4 取消
执行订阅方法时,方法会有一个返回值,这个返回调用unsubscribe()方法即取消订阅。如:
var observable = Rx.Observable.from([10, 20, 30]);
var subscription = observable.subscribe(x => console.log(x));
// 稍后:
subscription.unsubscribe();