0

我有一个用例,我必须将按钮按下转换为数据库获取。我有一个按下按钮的Observable。我正在将可观察对象的平面映射到另一个从数据库中获取项目的可观察对象。

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

但是在按下按钮之前,我需要第一次从 db 中获取项目。同样,在随后的按钮按下时,提取应该再次发生。

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

4

1 回答 1

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());
}
于 2018-08-08T07:24:20.833 回答