该主题的文档稀疏,很难在此找到“入口点”。
语义因主题类型而异。我将它们分为两种:vanilla(Rx.Subject)和特殊用途主题(其他三种)。专用主题由于其专业性(例如,完成/重新连接行为)而具有一些共同之处,因此具有一些香草主题的部分语义。
Rx.Subject
Vanilla Rx.Subject语义
主要特点
dispose
onNext
onError
onComplete
subscribe
.asObserver()
.asObservable()
我引用了Rxjs合约和语法的一个关键方面:
该语法允许可观察的序列将任何数量(0或更多)的onNext消息发送到订阅的观察者实例,还可以选择后跟单个成功(onCompleted)或失败(onError)消息。
(由创建的new Rx.Subject())香草主题实现了该语法:onCompleted被调用一次后,对的所有后续调用都将onNext被忽略。onCompleted同一观察者的第二次调用也将被忽略。如果观察者订阅了主题的可观察方,则其onComplete回调将立即被调用。
new Rx.Subject()
onCompleted
创建
返回一个主题,该主题将其观察者与其可观察的对象连接起来。本示例摘自官方文档,并描绘了如何使用主题作为代理。该主题已订阅源(观察者侧),并且也被观察者(可观察侧)收听。对onNext(观察者端)的任何调用都会导致可观察端onNext为其每个观察者调用相同的值。
* `Rx.Subject.create(observer, observable)`
从指定的观察者创建一个可观察的主题。这两个不一定连接。可以看到一个很好的示例,该示例的实现Rx.Dom.fromWebSocket返回一个主题,该主题用于从套接字发送和接收数据。主题的观察者侧将数据发送到套接字。可观察端用于侦听来自套接字的传入数据。此外,以这种方式创建的主题没有dispose方法。
Rx.Dom.fromWebSocket
专门的Rx.Subject语义
reactivex.io
希望我没有做错太多。我很乐意得到纠正。最后说明,这对于RxJS v4应该有效。