Rx java 从Rx获取最新数据可能是在Rx可观察到的变化时
我有一个用例,我想将Rx java 从Rx获取最新数据可能是在Rx可观察到的变化时,rx-java,Rx Java,我有一个用例,我想将可观察的中的数据与可能中的最新值组合起来。带有的API可能是一个我无法控制的外部API。实际上,我想做的是当可观察的发生变化时,从可能中懒洋洋地获取值,并使用函数将它们组合起来 为了简单起见,我们假设M是Integer,N是String。我试着写了以下内容: public interface SomeExternalApi { Maybe<String> getLatestString(); } public interface SomeInternalAp
可观察的中的数据与可能中的最新值组合起来。带有的API可能是一个我无法控制的外部API。实际上,我想做的是当可观察的
发生变化时,从可能
中懒洋洋地获取值,并使用函数将它们组合起来
为了简单起见,我们假设M
是Integer
,N
是String
。我试着写了以下内容:
public interface SomeExternalApi {
Maybe<String> getLatestString();
}
public interface SomeInternalApi {
Observable<Integer> getIntegerObservable();
}
public class MyClass {
private final SomeExternalApi externalApi;
private final SomeInternalApi internalApi;
public Disposable subscribe(Consumer<? super IntegerAndString> observer) {
return internalApi
.getIntegerObservable()
.withLatestFrom(
externalApi.getLatestString().toObservable(),
integerData, stringData -> new IntegerAndString(integerData, stringData)
.subscribe(observer);
}
private static class IntegerAndString {
// data class that holds onto both
}
}
公共接口SomeExternalApi{
可能是getLatestString();
}
公共接口API{
可观测的getIntegerObservable();
}
公共类MyClass{
私有最终SomeExternalApi externalApi;
私有最终SomeInternalApi;
根据定义,公共一次性订阅(消费者可能
最多发射一个元素
我认为您基本上希望反复调用externalApi.getLatestString()
。我还没有对此进行测试,但您可以尝试在此处使用Observable.defer(…)
:
public Disposable subscribe(Consumer<? super IntegerAndString> observer) {
return internalApi
.getIntegerObservable()
.withLatestFrom( Observable.defer(
() -> externalApi.getLatestString().toObservable() ),
integerData, stringData -> new IntegerAndString(integerData, stringData)
.subscribe(observer));
}
公共一次性订阅(消费者银行,这就是解决方案!