Sebuah Subject adalah semacam jembatan atau proksi yang bisa digunakan di beberapa implementasi ReactiveX yang berperan sebagai sebuah observer sekaligus sebagai sebuah Observable. Dikarenakan Subject merupakan sebuah observer, Subject mampu melakukan subscribe kepada satu atau lebih Observable. Dan karena Subject juga merupakan sebuah observer, Subject juga mampu melewatkan item-item yang di-observe olehnya dengan cara memancarkan mereka kembali, dan Subject juga bisa memancarkan item-item baru.
Dikarenakan sebuah Subject melakukan subscribe kepada sebuah Obervable, dia akan memicu Observable tersebut untuk memulai memancarkan item-item (Jika observable tersebut merupakan Observable yang "dingin", yang dimana artinya jika Observable tersebut menunggu sebuah subscription sebelum memancarkan item-item). Ini bisa mengakibatkan Subject tersebut menjadi sebuah Observable yang "panas", varian yang lain dari Observable yang "dingin".
Ada 4 jenis dari Subject
yang didesain untuk penggunaan tertentu. Tidak semua dari 4 jenis tersebut tersedia di seluruh implementasi, dan beberapa implementasi juga mempunyai nama yang lain untuk Subject (contohnya, di RxScala, apa yang dikenal sebagai "PublishSubject" dikenal sebagai "Subject" disini):
TBD
TBD
Jika anda mempunyai sebuah Subject
dan ingin meneruskannya ke agen-agen lainnya tanpa mengekspos interface Subscriber-nya
, anda bisa menutupinya dengan memanggil method asObservable-nya
, yang akan mengembalikan Subject tersebut sebagai sebuah Observable
yang murni.
AsyncSubject
BehaviorSubject
PublishSubject
ReplaySubject
Jika anda mempunyai sebuah Subject
dan ingin meneruskannya ke agen-agen lainnya tanpa mengekspos interface Subscriber-nya
, anda bisa menutupinya dengan memanggil method asObservable-nya
, yang akan mengembalikan Subject tersebut sebagai sebuah Observable
yang murni.
AsyncSubject
BehaviorSubject
PublishSubject
ReplaySubject
TBD
TBD
AsyncSubject
BehaviorSubject
ReplaySubject
TBD
TBD
TBD