RxJava创建Observable后如何添加元素

30

我刚开始使用RxJava,但遇到了一些问题。也许我没有正确使用RxJava,但我需要在创建后往Observable中添加项目。我知道可以调用 Observable.just("Some", "Items") 来发送数据给订阅者,但是如果我有一个异步任务,在任务完成后需要添加更多的项目怎么办?我无法找到类似 Observable.addItems("Some", "More", "Items") 的方法。

2个回答

53

你可能需要的是 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");

1
正是我正在寻找的...当我阅读文档时,由于某些原因我忽略了这个类。谢谢! - Jelly
如果Kotlin对某些人不起作用,您需要执行以下操作: val subject: PublishSubject<String> = PublishSubject.create<String>() - nmu

2
值得注意的是,PublishSubject 不会缓存项目。例如,如果上面的代码如下所示,则不会打印 Item1,因为该主题尚未订阅。 PublishSubject<String> subject = PublishSubject.create(); subject.onNext("Item1"); subject.subscribe(System.out::println); subject.onNext("Item2"); 使用 ReplaySubject 进行缓存。 阅读此文档可能会有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接