我正在使用 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/