Android RxJava:基于条件的完整流

Android RxJava:基于条件的完整流,android,rx-java2,Android,Rx Java2,我有一个关于Observable的,当一些数据来自一个可观察的连接时,它会发出项目: public interface CommunicationController { Flowable<DataContainer> dataReceived(); } b。我收到一条特定类型的消息(再次使用filter操作符) 如何将这两个可观察的组合成一个? 另外,两个可观测对象中只有一个会发射一个项目 要组合两个观察值,可以使用运算符zipWith。例如: Observable&l

我有一个关于Observable的,当一些数据来自一个可观察的连接时,它会发出项目:

public interface CommunicationController {
     Flowable<DataContainer> dataReceived();
}
b。我收到一条特定类型的消息(再次使用
filter
操作符)

如何将这两个可观察的
组合成一个?

另外,两个可观测对象中只有一个会发射一个项目

要组合两个观察值,可以使用运算符zipWith。例如:

Observable<AppMetaDataBiz> appMetaDataObservable = this.mAppRepository.getAppMetaData();

Observable<ProductBiz> productDetailsObservable =
        this.mProductRepository.getProductDetails(this.productId);

return productDetailsObservable.zipWith(appMetaDataObservable,
                                            ((jmProduct, jmAppMetaData) -> {

                                               //TODO: implement business logic

                                                return jmProduct;
                                            }));
Observable-appMetaDataObservable=this.mAppRepository.getAppMetaData();
可观测产品详细信息可观测=
this.mpProductRepository.getProductDetails(this.productId);
返回ProductDetailsBServable.zipWith(appMetaDataObservable,
((jmProduct,jmAppMetaData)->{
//TODO:实现业务逻辑
退货产品;
}));

要组合两个观察值,可以使用运算符zipWith。例如:

Observable<AppMetaDataBiz> appMetaDataObservable = this.mAppRepository.getAppMetaData();

Observable<ProductBiz> productDetailsObservable =
        this.mProductRepository.getProductDetails(this.productId);

return productDetailsObservable.zipWith(appMetaDataObservable,
                                            ((jmProduct, jmAppMetaData) -> {

                                               //TODO: implement business logic

                                                return jmProduct;
                                            }));
Observable-appMetaDataObservable=this.mAppRepository.getAppMetaData();
可观测产品详细信息可观测=
this.mpProductRepository.getProductDetails(this.productId);
返回ProductDetailsBServable.zipWith(appMetaDataObservable,
((jmProduct,jmAppMetaData)->{
//TODO:实现业务逻辑
退货产品;
}));

我认为你的答案是可以观察到的。合并:

根据文档,这并不是等待每一个可观察到的东西发出

一个选项是使用合并和删除,直到:

科特林代码:

val stopStream = Observable.merge(...)

streamThatWillRun = streamThatWillRun.takeUntil(stopStream)

我认为你的答案是显而易见的。合并:

根据文档,这并不是等待每一个可观察到的东西发出

一个选项是使用合并和删除,直到:

科特林代码:

val stopStream = Observable.merge(...)

streamThatWillRun = streamThatWillRun.takeUntil(stopStream)

嗯,
zipWith
不能解决我的问题,因为如果两个
Observable
s都发出一个事件,它只会发出一个事件。在我的例子中,更重要的是,两个观测值中只有一个会发射一个项目。我应该在问题中澄清这一点。嗯,我可能会明白你的想法。如果我是对的,CombineTest可能会帮助您:嗯,
zipWith
不会解决我的问题,因为如果两个
Observable
s都发出一个事件,它只会发出一个事件。在我的例子中,更重要的是,两个观测值中只有一个会发射一个项目。我应该在问题中澄清这一点。嗯,我可能会明白你的想法。如果我是对的,CombineTest可能会帮助您: