TableEntries我从RxScala开始,我正在尝试建立一个轮询机制,检查每个间隔(比如说20秒)的数据库,检查表中某些行是否有任何变化。
object MyDatabaseService {
def getAllEntries: List[MyTableEntries] = ???
}
我需要从一个会发出List [MyTableEntries]的Observable开始。所以我从以下开始:
class MyDBObservable(service: MyDatabaseService, observer: Observer[Seq[MyTableEntries]]) extends Observable[Seq[MyTableEntries]] {
val o = Observable.interval(10.seconds).map { _ => service.getAllTableEntries }
o.subscribe(observer)
}
在我传入函数的Observer中,我实现了onNext,onError和onCompleted!但是有几个问题:
这是我做过的有效方法吗?建议?
答案 0 :(得分:1)
如果我的数据库响应时间超过30秒会发生什么
假设第一个service.getAllTableEntries
需要30秒,第二个和第三个service.getAllTableEntries
需要1秒。
然后在你的例子中,第一个service.getAllTableEntries
发生在10秒,第二个发生在40秒,第三个发生在41秒。
基本上,由于长时间运行,不会跳过事件。相反,只是推迟事件。
如果我的数据库完全关闭会怎么样?
如果是这样,我认为service.getAllTableEntries
会抛出异常,您将在onError
收到该异常。