Every Subject is an Observer, meaning we can freely use the Observer methods next(), error(), complete() to manually send events to the Subject. This lesson will teach you how to use a Subject as an Event Bus through the Observer methods.
Hi Brendan. The Observable contract means that all observables should agree to never emit 'next' after either 'complete' or 'error' is emitted. It is technically possible to call
subject.next(a), but this would violate that convention, leading to possible bugs or weird behavior. There is a lesson in Egghead about the Observable contract.
A Subject has that name to stay similar to the Observer pattern (a software design pattern) because in that design pattern the "subject" was an object containing a list of observers. In RxJS, the subject is the only type of object that contains a list of observers (while common observables do not have such list internally).