В проекте содержатся примеры использования перечисленных ниже операторов.
Полный список операторов можно посмотреть здесь
create
fromArray
fromIterable
interval
just
repeat
collect
flatMap
groupBy
map
debounce
distinct
elementAt
filter
first
take
combineLatest
merge
zip
onErrorReturnItem
onErrorResumeNext
retry
subscribeOn
ObserveOn
distinctUntilChanged
skipWhile
takeWhile
Subject
одновременно является и Observer
и Observable
. Т.е. он может подписываться на Observable и получать от них события, и, в то же время, у него могут быть подписчики, которым он эти события будет пересылать.
-
PublishSubject
- самый простой типSubject
. Принимает события и отдаёт их всем текущим подписчикам. -
BehaviorSubject
- помимо того, что он какPublishSubject
отправляет все события, порожденные после подписки, для нового подписчика он отправляет последнее переданное ему до этого событие. Если ни одного события еще не было отправлено, то он отправит значение по умолчанию, если оно было задано. -
ReplaySubject
- помимо того, что он отправляет все события, порожденные после подписки, для новых подписчиков он сначала передаст все события, которые были отправлены им ранее. По умолчанию кэшируются все события, отправленные с момента создания Subject, для бесконечных или долгих потоков следует ограничить кеширование по количеству событийcreateWithSize()
, времениcreateWithTime()
или и тому и другому, в зависимости от того, что произойдет раньшеcreateWithTimeAndSize()
. -
AsyncSubject
- передает подписчикам только последнее событие, когда их последовательность завершена событием onComplete. Поэтому его можно использовать только с не бесконечными источниками событий. -
UnicastSubject
- сохраняет все переданные ему данные пока некийObserver
подписан на него, потом передает все полученные данные сразу и очищает кэш. На него может подписаться только один подписчик, и даже после того, как этот подписчик отпишется, никто больше не сможет не него подписаться.