Подтвердить что ты не робот

Добавлены элементы rxjava после наблюдения

Я только начал использовать rxjava, и я застрял. Возможно, я не использую rxjava правильно, но мне нужно добавить элементы в Observable после его создания. Поэтому я понимаю, что вы можете просто позвонить Observable.just("Some", "Items"), и подписчики получат их, но что, если у меня есть асинхронная задача, и мне нужно добавить еще несколько элементов позже, когда задача будет закончена? Я не мог найти ничего подобного Observable.addItems("Some", "More", "Items")

4b9b3361

Ответ 1

Что вам, вероятно, нужно - Subject - http://reactivex.io/documentation/subject.html

Это объект, который является Observer и Observable, поэтому вы можете подписаться на него и испустить новые элементы. Например:

PublishSubject<String> subject = PublishSubject.create();
subject.subscribe(System.out::println);
subject.onNext("Item1");
subject.onNext("Item2");

Ответ 2

Полезно отметить, что PublishSubject не кэширует элементы. Например, если приведенный выше код был следующим, Item1 не был бы напечатан, так как объект еще не подписан. PublishSubject<String> subject = PublishSubject.create(); subject.onNext("Item1"); subject.subscribe(System.out::println); subject.onNext("Item2");

Используйте ReplaySubject для кэширования. Было бы полезно прочитать this