RX Как подписаться только на указанные c события по теме - PullRequest
0 голосов
/ 03 мая 2020

Я хотел бы знать, возможно ли использование субъекта только для подписки на определенный тип событий c Например, у меня есть перечисление ANIMAL

enum class ANIMAL {
    DOG, CAT, PARROT
}

Затем я создаю тему

val animalSubject: PublishSubject<ANIMAL> = PublishSubject.create()

но я хочу подписаться только на CATS как это сделать? Это получает события всех животных.

animalSubject.subscribe { println("I want only Cats here $it") }

Я хочу подписаться только на собаку. Я могу использовать фильтр здесь, но он будет принимать все события и фильтровать только собак (не то, что я ищу)

animalSubject.filter {it == ANIMAL.DOG}.subscribe { println("Only Dogs here $it") }

Когда я вызываю onNext, событие будет отправлено всем наблюдателям. Поэтому я подумал, что может быть возможность получить наблюдателей от субъекта и каким-то образом проверить, на какое животное подписаны наблюдатели.

Я не уверен, возможно ли использование субъекта, но кто я? попытка избежать - отправить ВСЕ события всем наблюдателям. Может быть, было бы хорошо просто отправить события тем, кто подписан на эту спецификацию c Animal

Возможно ли это с субъектом или с другим оператором в Rx Java?

...