Рубрики
Без рубрики

Понимание темы RxJava — Публикация, воспроизведение, Поведение и Асинхронная тема

Все о предмете доступно в RxJava. С тегами android, rxjava, java, разработка.

Эта статья полностью посвящена теме, доступной в RxJava.

  • Тема публикации
  • Тема воспроизведения
  • Субъект Поведения
  • Асинхронный субъект

Поскольку у нас уже есть пример проекта, основанного на RxJava 2, для изучения RxJava (многие разработчики извлекли уроки из этого примера проекта), Поэтому я включил тематические примеры в один и тот же проект. Разветвляйте, клонируйте, создавайте, запускайте и изучайте RxJava.

Проверьте это здесь

Итак, давайте подробнее рассмотрим этот предмет.

Что такое Предмет?

Субъект – это своего рода мост или прокси-сервер, доступный в некоторых реализациях ReactiveX, который действует как наблюдатель, так и как Наблюдаемый. Поскольку он является наблюдателем, он может подписаться на один или несколько Наблюдаемых объектов, а поскольку он является Наблюдаемым, он может проходить через наблюдаемые элементы, повторно испуская их, а также может испускать новые элементы.

Я считаю: обучение на примерах – лучший способ учиться.

Наблюдаемый: Предположим, что профессор является наблюдаемым. Профессор преподает какую-то тему.

Наблюдатель: Предположим, что студент является наблюдателем. Студент наблюдает за темой, которую преподает профессор.

Тема публикации

Он испускает все последующие элементы источника, наблюдаемые во время подписки.

Здесь, если ученик поздно вошел в класс, он просто хочет слушать с того момента, когда он вошел в класс. Таким образом, публикация будет лучшей для этого варианта использования.

Смотрите приведенный ниже пример:

PublishSubject source = PublishSubject.create();

// It will get 1, 2, 3, 4 and onComplete
source.subscribe(getFirstObserver()); 

source.onNext(1);
source.onNext(2);
source.onNext(3);

// It will get 4 and onComplete for second observer also.
source.subscribe(getSecondObserver());

source.onNext(4);
source.onComplete();

Ознакомьтесь с полным примером здесь.

Тема воспроизведения

Он излучает все наблюдаемые элементы источника, независимо от того, когда подписчик подписывается.

Здесь, если ученик поздно вошел в класс, он хочет слушать с самого начала. Итак, здесь мы будем использовать повтор для достижения этой цели.

Смотрите приведенный ниже пример:

ReplaySubject source = ReplaySubject.create();
// It will get 1, 2, 3, 4
source.subscribe(getFirstObserver()); 
source.onNext(1);
source.onNext(2);
source.onNext(3);
source.onNext(4);
source.onComplete();
// It will also get 1, 2, 3, 4 as we have used replay Subject
source.subscribe(getSecondObserver());

Ознакомьтесь с полным примером здесь.

Субъект Поведения

Он испускает самый последний испущенный элемент и все последующие элементы наблюдаемого источника, когда наблюдатель подписывается на него.

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

Смотрите приведенный ниже пример:

BehaviorSubject source = BehaviorSubject.create();
// It will get 1, 2, 3, 4 and onComplete
source.subscribe(getFirstObserver());
source.onNext(1);
source.onNext(2);
source.onNext(3);
// It will get 3(last emitted)and 4(subsequent item) and onComplete
source.subscribe(getSecondObserver());
source.onNext(4);
source.onComplete();

Ознакомьтесь с полным примером здесь.

Асинхронный субъект

Он выдает только последнее значение наблюдаемого источника (и только последнее значение).

Здесь, если ученик вошел в любой момент времени в класс, и он хочет слушать только о последнем (и только о последнем), чему его учат. Итак, здесь мы будем использовать асинхронность.

Смотрите приведенный ниже пример:

AsyncSubject source = AsyncSubject.create();
// It will get only 4 and onComplete
source.subscribe(getFirstObserver());
source.onNext(1);
source.onNext(2);
source.onNext(3);
// It will also get only get 4 and onComplete
source.subscribe(getSecondObserver());
source.onNext(4);
source.onComplete();

Ознакомьтесь с полным примером здесь.

Итак, всякий раз, когда вы сталкиваетесь с подобными случаями, тема RxJava будет вашим лучшим другом.

Счастливого кодирования:)

Амит Шекхар, Разум работает | |/После Академии | |/Любопытный

Первоначально опубликовано на Разум работает .

Оригинал: “https://dev.to/amitiitbhu/understanding-rxjava-subjectpublish-replay-behavior-and-async-subject”