将布尔 observables 列表映射到输出,只要所有输入都为真就发出真

Gab*_*uff 2 reactive-programming rx-java

假设我有n Boolean Observables ( O1, O2,..., On) 发出标志,例如,复选框选择状态。

例如,对于n = 3,我们会有这样的东西(T=trueF= false):

O1    - T ------------------- F ----------------------- T ------

O2    - F ------------ T ---------------------------------------

O3    - T -------------------------- F -------- T --------------
Run Code Online (Sandbox Code Playgroud)

我想得到一个输出Boolean ObservableOout),true当所有最新的排放量是truefalse其他情况时发出。像这样的东西:

O1    - T ------------------- F ----------------------- T ------

O2    - F ------------ T ---------------------------------------

O3    - T -------------------------- F -------- T --------------

================================================================

Oout  - F ------------ T ---- F ----------------------- T ------
Run Code Online (Sandbox Code Playgroud)

RxJava 中是否有一种奇特的方法可以做到这一点(也就是说,无需创建自定义可观察对象并自己监控状态。我觉得几个操作员可以完成这项工作)?

kop*_*rko 5

静态方法Observable.combineLatest(List<Observable<T>> observables, FuncN<?> combineFunction)是您正在寻找的东西。

您传入一个 observable 列表和一个确定输出的组合函数,在您的情况下,只需一个 for 循环就足以检查它们是否全部为真。