use*_*222 39
语义根据主题的类型而不同.我将它们分为两种:香草(Rx.Subject
)和特殊目标(其他三种).由于专业化(例如,完成/重新连接行为),特殊目的主题与香草主题的语义共享一些警告.
Vanilla Rx.Subject语义
主要特点
dispose
在他们的原型上有一个处理程序).这意味着,除其他外,他们有:
onNext
,onError
,onComplete
方法subscribe
方法.asObserver()
,and .asObservable()
)如果需要的话dispose
某个主题将取消订阅所有观察者并释放资源.我引用了Rxjs合同和语法的一个关键方面:
该语法允许可观察序列将任何数量(0或更多)的onNext消息发送到订阅的观察者实例,可选地随后是单个成功(onCompleted)或失败(onError)消息.
一个vanilla主题(用其创建new Rx.Subject()
)实现了该语法:当onCompleted
被调用一次时,所有后续调用onNext
都被忽略.onCompleted
对同一观察者的第二次召唤也被忽略了.如果观察者订阅了主题的可观察方,onComplete
则会立即调用其回调(http://jsfiddle.net/cLf6Lqsn/1/).
创建
new Rx.Subject()
返回将其观察者连接到其observable(jsfiddle)的主题.此示例取自官方文档,并描述了如何将主题用作代理.主题订阅了一个来源(观察者一方),并且也被观察者(可观察的一方)收听.对onNext
(观察者方)的任何调用都会导致可观察的一方调用onNext
每个观察者的相同值.
Rx.Subject.create(observer, observable)
从指定的观察者和observable创建主题.这两者不一定相关.在实现中可以看到一个很好的例子,Rx.Dom.fromWebSocket
它返回一个用于从套接字发送和接收数据的主题.主体的观察者侧将数据发送到套接字.可观察侧用于侦听来自套接字的传入数据.此外,以这种方式创建的主题没有dispose
方法.
专门的Rx.Subject语义
reactivex.io
文档很好地涵盖了专业主题的大部分语义.希望我没有太多错误.我很乐意得到纠正.最后请注意,这应该对RxJS v4有效.
有关冷/热可观测量行为的详细解释,可以参考:热和冷可观测量:是否存在"热"和"冷"运算符?
归档时间: |
|
查看次数: |
11920 次 |
最近记录: |