java - Rx-Java:创建可配置的 Observable

标签 java rx-java observable configurable

我是 RxJava 的新手,我想知道如何创建可配置的 Observable?让我们想象一下,我可以像这样编写一个数据库到数据库的传输:

srcDb.getObservable(Bean.class)
     .sql(selectSql)
     .params(selectParams)
     .subscribe(
          trgDb.getSubscriber(Bean.class)
               .sql(insertSql)
     );

我已经可以用订阅者做到这一点,但我如何才能以与 Observable 本身相同的方式获得一些小配置?

最佳答案

有两种方法可以做到这一点:

选项 #1:让您自己的对象进行配置,然后使用 execute()query()toObservable() 切换域:

 srcDb
 .find(Bean.class)
 .sql(selectSql)
 .params(selectParams)
 .execute()
 .subscribe(
      trgDb.getSubscriber(Bean.class)
           .sql(insertSql)
 );

选项 #2:使用 .compose() 重用常用操作:

srcDb
.getObservable(Bean.class)
.compose(addSQLParameters())
.subscribe(
      trgDb.getSubscriber(Bean.class)
           .sql(insertSql)
 );

 <T> Transformer<T,T> addSQLParameters() {
   return obs -> obs.sql(selectSql).params(selectParams);
 }

我建议您使用选项 #1,因为它可以更好地管理您的代码部分。

关于java - Rx-Java:创建可配置的 Observable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39836149/

相关文章:

java - Set接口(interface)如何保证不重复

java - Android Studio无法建立我的APK?

java - 如果 RxJava 中结果无效,如何发送 onError

javascript - 没有订阅者时如何暂停 shareReplay

javascript - Observable<unknown> 不可分配给 Observable<{}>。它缺少以下属性,如名称、电子邮件、isAdmin

java - Springfox 从 2.9.2 更新到 2.10.4 后错误 "Unable to infer base url. ..."

rx-java - 防止 Observable 为每个订阅运行

android - Retrofit 和 RxJava,避免回调 hell

javascript - 使用 Observable 排队 promise

java - 创建Servlet+JSP框架并在其他项目中使用它