This is a draft article likely to evolve or be deleted or merged with another article in the future.
Observer: when subscribing, get all past emitted values
Subject: when subscribing, get only next-to-come emitted values
Subjectbut keeps a current state, which is the last received value or the one passed to the constructor if none received, then emits it immediately when being subscribed to
ReplaySubject: when subscribing, get all last X emitted values
AsyncSubject: emits the result of an asynchronous operation when the observable completes
shareReplay: when subscribing, emits the last value. This helps avoid making a new HTTP request for each new subscription, for instance.