rx-java - 将热 Observable 转换为冷 Observable

我正在使用 RxJava 观察数据库表。所有 SQL SELECT 查询都返回一个热可观察对象,每当我在同一个表中插入/更新/删除行时,我将重新运行任何订阅的 SELECT 查询并在热查询可观察对象上调用 onNext(queryResult)

database.select("SELECT * FROM Foo) // returns an observable
       .map(doSomething)
       .filter(aFilter)
       .subscribe (
             { 
                 //  onNext
             },
             {
                // onError
             }
          )

这很好用。但是,在一个特殊用例中,我想避免数据库重新发出一个新项目。有没有我可以使用某种运算符使它成为单个“冷”可观察对象,而不必更改为热可观察对象构建的所有数据库层,如下所示:

database.select("SELECT * FROM Foo) // returns an observable
           .map(doSomething)
           .filter(aFilter)
           .toColdObservable()
           .subscribe (
                 { 
                     //  onNext
                 },
                 {
                    // onError
                 }
              )

我知道“cold observable”这个词不合适,但我还没找到更好的名字。所以我想要的是数据库不通知 SQL Query Observable 更新。所以我所说的“冷可观察”的意思是只查询一次数据库,之后不再接收更新。

最佳答案

简单的 take(1) 怎么样?这将在第一个结果后完成您的查询。

https://stackoverflow.com/questions/34030793/

相关文章:

php - 编译PHP7错误

c# - 还有其他更好的方法可以将参数传递给 backgroundworker runasync 吗

c++11 - 向量的分段平方,C++ Eigen 中两个向量的分段乘积

java - 当新阶段弹出时,我如何禁用初级阶段

c# - wpf - Expander 的标题适合内容宽度?

cordova - react 路由器和 Cordova 不工作

php - 使用 Prestashop 1.6 在模块中获取产品类别名称

css - 输入内的响应式 fa-icon

solr - 使用身份验证在控制台中创建 Solr 核心

git - "git clone"是否创建一个完全相对的目录?