Skip to content

Subject

DavidMGross edited this page Sep 24, 2013 · 22 revisions

A Subject is a sort of bridge or proxy that acts both as an Observer and as an Observable. Because it is an Observer, it can subscribe to one or more Observables, and because it is an Observable, it can pass through the items it observes by reemitting them, and it can also emit new items.

There are four subclasses of Subject that are designed for particular use cases:

AsyncSubject

AsyncSubject emits the last value (and only the last value) emitted by the source Observable(s), and only after that source Observable(s) completes.

see also:

BehaviorSubject

When an Observer subscribes to a BehaviorSubject, it begins by emitting the item most recently emitted by the source Observable (or a seed/default value if none has yet been emitted) and then continues to emit any other items emitted later by the source Observable(s).

see also:

PublishSubject

PublishSubject emits to a subscriber only those items that are emitted by the source Observable(s) subsequent to the time of the subscription.

see also:

ReplaySubject

ReplaySubject emits to any subscriber all of the items that were emitted by the source Observable(s), regardless of when the subscriber subscribes.

see also:

Clone this wiki locally