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

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


person Jelly    schedule 07.03.2015    source источник


Ответы (2)


Вероятно, вам нужна Subjecthttp://reactivex.io/documentation/subject.html

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

PublishSubject<String> subject = PublishSubject.create();
subject.subscribe(System.out::println);
subject.onNext("Item1");
subject.onNext("Item2");
person krp    schedule 07.03.2015
comment
Именно то, что я искал... По какой-то причине я проигнорировал этот класс, когда читал документы. Благодарю вас! - person Jelly; 07.03.2015
comment
Если это не работает для людей в котлине, вам нужно сделать: val subject: PublishSubject<String> = PublishSubject.create<String>() - person nmu; 21.07.2017

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

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

person shobhitdutia    schedule 25.04.2017