该主题的文档很少,很难在那里找到“切入点”。
最佳答案
语义因主题类型而异。我将它们分为两种:普通(Rx.Subject
)和特殊用途的科目(其他三种)。由于它们的特化(例如,完成/重新连接行为),特殊目的主题共享 Vanilla 主题的部分语义,但有一些警告。
Vanilla Rx.Subject 语义
dispose
处理程序)。这意味着,除其他外,他们有:onNext
, onError
, onComplete
方法 subscribe
方法 .asObserver()
和 .asObservable()
) dispose
选择一个主题将 unsubscribe all observers and release resources. 我引用了 Rxjs contract and grammar 的一个关键方面:
This grammar allows observable sequences to send any amount (0 or more) of onNext messages to the subscribed observer instance, optionally followed by a single success (onCompleted) or failure (onError) message.
new Rx.Subject()
创建)实现了该语法:当 onCompleted
已被调用一次,所有后续调用 onNext
被忽略。 onCompleted
的第二个电话在同一个观察者上也被忽略。如果观察者订阅了主题的可观察端,它的 onComplete
回调将立即被调用( http://jsfiddle.net/cLf6Lqsn/1/ )。new Rx.Subject()
返回一个将其观察者与其可观察对象( jsfiddle )联系起来的主题。本示例取自官方 documentation并描绘了如何使用主题作为代理。主题订阅源(观察者端),并且也被观察者(可观察端)监听。任何调用
onNext
(观察者端)导致可观察端调用 onNext
每个观察者的值都相同。Rx.Subject.create(observer, observable)
从指定的观察者和可观察对象创建一个主题。这两者没有必然联系。在
Rx.Dom.fromWebSocket
的实现中可以看到一个很好的例子。它返回用于从套接字发送和接收数据的主题。主体的观察者端向套接字发送数据。可观察端用于监听来自套接字的传入数据。此外,以这种方式创建的主题没有 dispose
方法。 专门的 Rx.Subject 语义
reactivex.io
documentation涵盖了专业学科的大部分语义。 希望我没有做错太多。我很乐意得到纠正。最后一点,这应该对 RxJS v4 有效。
有关冷/热 observables 行为的详细解释,可以引用:Hot and Cold observables : are there 'hot' and 'cold' operators?
关于javascript - 不同 RxJS 主题的语义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34849873/