rxjava 在创建可观察对象后添加项目
rxjava add items after observable was created
我刚开始使用rxjava 就卡住了。也许我没有以正确的方式使用 rxjava,但我需要在 Observable
创建后将项目添加到它。所以我知道你可以只调用 Observable.just("Some", "Items")
并且订阅者会收到它们,但是如果我有一个异步任务并且我需要在任务完成后添加更多项目怎么办?我找不到类似 Observable.addItems("Some", "More", "Items")
的内容
您可能需要的是主题 - 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
进行缓存。
阅读会有所帮助
this
我刚开始使用rxjava 就卡住了。也许我没有以正确的方式使用 rxjava,但我需要在 Observable
创建后将项目添加到它。所以我知道你可以只调用 Observable.just("Some", "Items")
并且订阅者会收到它们,但是如果我有一个异步任务并且我需要在任务完成后添加更多项目怎么办?我找不到类似 Observable.addItems("Some", "More", "Items")
您可能需要的是主题 - 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
进行缓存。
阅读会有所帮助
this