RxJava从平面图可观察到的下游发射初始值

时间:2018-08-08 05:51:09

标签: rx-java rx-javafx

我有一个用例,其中我必须将按钮按下转换为数据库提取。按下按钮后,我有一个可观察的。我正在将可观察对象的flatMap转换为另一个可观察对象,以从数据库中获取项目。

Observable<Customer> customerListObservable = getButtonPressObservable()
        .map(event -> new Object())
        .startWith(new Object())
        .flatMap(event -> DatabaseHelper.getDatabase()
                .select("select * from Customer")
                .autoMap(Customer.class)
                .toObservable());

但是,在按下按钮之前,我将需要首次从db获取项目。同样,在随后按下按钮时,应该再次进行获取。

除了上述代码以外,还有其他干净的方法可以生成初始值吗?

1 个答案:

答案 0 :(得分:0)

我会观察到的东西

Observable<Customer> customerObservable = Observable.concat(getFromDb(), getAfterClick());

private Observable<Customer> getFromDb() {
   return DatabaseHelper.getDatabase()
                .select("select * from Customer")
                .autoMap(Customer.class)
                .toObservable());
}

private Observable<Customer> getAfterClick() {
   return getButtonPressObservable()
        .map(event -> new Object())
        .startWith(new Object())
        .flatMap(event -> getFromDb());
}