E-K*_*ami 14 java reactive-programming rx-java rx-android
我正在尝试获取给定的最新值,Observable并在调用后立即将其发出.以下面的代码为例:
return Observable.just(myObservable.last())
.flatMap(myObservable1 -> {
return myObservable1;
})
.map(o -> o.x) // Here I want to end up with a T object instead of Observable<T> object
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为通过这样做,flatMap将发射myObservable1,然后必须发射,以达到map.我不知道是否可以做这样的事情.有没有人知道如何实现这一目标?谢谢
Mat*_*Bos 25
last() 方法在这里没有任何帮助,因为它等待Observable终止给你最后发出的项目.
假设您没有对发射的observable进行控制,您可以简单地创建一个BehaviorSubject并将其订阅到发出您想要侦听的数据的observable,然后订阅创建的主题.既然Subject是两者Observable,Subscriber你会得到你想要的.
我认为(现在没有时间检查)您可能必须手动取消订阅原始观察,因为BehaviorSubject一旦所有订阅者取消订阅都不会自动取消订阅.
像这样的东西:
BehaviorSubject subject = new BehaviorSubject();
hotObservable.subscribe(subject);
subject.subscribe(thing -> {
// Here just after subscribing
// you will receive the last emitted item, if there was any.
// You can also always supply the first item to the behavior subject
});
Run Code Online (Sandbox Code Playgroud)
http://reactivex.io/RxJava/javadoc/rx/subjects/BehaviorSubject.html
| 归档时间: |
|
| 查看次数: |
44178 次 |
| 最近记录: |