rxjava在创建observable后添加项目

时间:2015-03-07 10:38:14

标签: asynchronous observable rx-java rx-android

我刚开始使用rxjava而且卡住了。也许我没有以正确的方式使用rxjava,但我需要在创建项目后将其添加到Observable。所以我理解你可以只调用Observable.just("Some", "Items")并且订阅者将收到它们,但是如果我有一个异步任务并且我需要在任务完成后再添加一些项目呢?我找不到像Observable.addItems("Some", "More", "Items")

这样的内容

2 个答案:

答案 0 :(得分:31)

您可能需要的是主题 - http://reactivex.io/documentation/subject.html

这是 Observer Observable 的对象,因此您可以订阅它并发出新项目。例如:

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

答案 1 :(得分:1)

值得注意的是PublishSubject不会缓存项目。例如,如果以上代码如下,则由于主题尚未订阅,因此不会打印Item1PublishSubject<String> subject = PublishSubject.create(); subject.onNext("Item1"); subject.subscribe(System.out::println); subject.onNext("Item2");

使用ReplaySubject进行缓存。 阅读会很有帮助 this