28

我刚开始使用 rxjava 就被卡住了。也许我没有以正确的方式使用 rxjava,但我需要Observable在它创建后添加项目。所以我知道你可以打电话Observable.just("Some", "Items")并且订阅者会收到它们,但是如果我有一个异步任务并且我需要在任务完成后添加更多项目怎么办?我找不到类似的东西Observable.addItems("Some", "More", "Items")

4

2 回答 2

49

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

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

PublishSubject<String> subject = PublishSubject.create();
subject.subscribe(System.out::println);
subject.onNext("Item1");
subject.onNext("Item2");
于 2015-03-07T13:45:16.483 回答
1

PublishSubject注意不缓存项目很有用。例如,如果上面的代码如下,Item1则不会打印,因为主题尚未订阅。 PublishSubject<String> subject = PublishSubject.create(); subject.onNext("Item1"); subject.subscribe(System.out::println); subject.onNext("Item2");

用于ReplaySubject缓存。阅读本文会有所帮助

于 2017-04-25T22:25:04.900 回答