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