Varieties of Subject
As we mentioned earlier, there are a lot of varieties available for Subjects. As we have gained some grip in Subject, let's now dive into varieties of Subject to understand it better. So, these are some of the most useful and important varieties of Subject, which we will discuss here:
AsyncSubjectPublishSubjectBehaviorSubjectReplaySubject
Understanding AsyncSubject
AsyncSubject only emits the last value of the source observable (Observable it listens on), and the last emission only. To say things more clearly, AsyncSubject will emit the last value it got, and will emit it only one time.
This is a marble diagram for AsyncSubject, which has been taken from ReactiveX documentation (http://reactivex.io/documentation/subject.html):

Let's consider the following code example:
fun main(args: Array<String>) {
val observable = Observable.just(1,2,3,4)//1
val subject = AsyncSubject.create<Int>()//2
observable.subscribe(subject)//3
subject.subscribe...