我刚开始使用RxJava,但遇到了一些问题。也许我没有正确使用RxJava,但我需要在创建后往Observable中添加项目。我知道可以调用 Observable.just("Some", "Items")
来发送数据给订阅者,但是如果我有一个异步任务,在任务完成后需要添加更多的项目怎么办?我无法找到类似 Observable.addItems("Some", "More", "Items")
的方法。
我刚开始使用RxJava,但遇到了一些问题。也许我没有正确使用RxJava,但我需要在创建后往Observable中添加项目。我知道可以调用 Observable.just("Some", "Items")
来发送数据给订阅者,但是如果我有一个异步任务,在任务完成后需要添加更多的项目怎么办?我无法找到类似 Observable.addItems("Some", "More", "Items")
的方法。
你可能需要的是 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");
PublishSubject
不会缓存项目。例如,如果上面的代码如下所示,则不会打印 Item1
,因为该主题尚未订阅。
PublishSubject<String> subject = PublishSubject.create();
subject.onNext("Item1");
subject.subscribe(System.out::println);
subject.onNext("Item2");
使用 ReplaySubject
进行缓存。
阅读此文档可能会有所帮助。
val subject: PublishSubject<String> = PublishSubject.create<String>()
- nmu