java - 使用 ObservableBoolean 或 Observable<Boolean> 组合两个可观察的 boolean 值

标签 java android asynchronous rx-java observable

在 JavaFX 中,您可以执行以下操作来组合两个可观察的 boolean 值:

BooleanProperty imagesDownloaded = new SimpleBooleanProperty(false);
BooleanProperty animationComplete = new SimpleBooleanProperty(false);

BooleanBinding isValid = imagesDownloaded.and(animationComplete);

我如何使用 RxJava 或 google 的 Databinding API 做同样的事情? 我还想监听 isValid 变量的值变化。

最佳答案

您可以使用 Observable.combineLatest() , Observable.zip() , Observable.merge() , 和其他 operators取决于您的目标。

我将添加一个简短的示例来展示这在 RxJava 中的样子:

PublishSubject<Boolean> property1 = PublishSubject.create();
PublishSubject<Boolean> property2 = PublishSubject.create();

Observable.combineLatest(property1,
                         property2,
                         (propertyOneValue, propertyTwoValue) -> propertyOneValue && propertyTwoValue)
          .subscribe(isValid -> doWork(isValid));

// sometime later
property1.onNext(true);
property2.onNext(true);

关于java - 使用 ObservableBoolean 或 Observable<Boolean> 组合两个可观察的 boolean 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34531387/

相关文章:

java - 如何使用 jersey 将 header 信息作为键值对传递以使用休息服务

java - Android Soap 服务调用的奇怪响应

c# - 为什么没有用于 C# 应用程序开发的开源框架(如 Java)?

java - 在测试应用程序之前初始化 Spring Boot 测试 bean

java - 如何使用按钮单击android中的警报框发送短信

android - Firebase react-native 无法访问

c# - 异步/等待的架构

c++ - 如何等待 Glib::Dispatcher 的连接函数完成?

javascript - 处理异步函数的同步方式,两层深度

java - 如何...使用 MigLayout