Я только начал использовать rxjava и застрял. Возможно, я неправильно использую rxjava, но мне нужно добавить элементы в Observable
после его создания. Итак, я понимаю, что можно просто позвонить Observable.just("Some", "Items")
и подписчики их получат, но что, если у меня есть асинхронная задача и мне нужно добавить еще несколько элементов позже, когда задача будет завершена? Я не смог найти ничего похожего на Observable.addItems("Some", "More", "Items")
rxjava добавить элементы после создания наблюдаемого
Ответы (2)
Вероятно, вам нужна 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");
person
krp
schedule
07.03.2015
Именно то, что я искал... По какой-то причине я проигнорировал этот класс, когда читал документы. Благодарю вас!
- person Jelly; 07.03.2015
Если это не работает для людей в котлине, вам нужно сделать:
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