我有配置Observable
,我正在订阅并启动我自己的Observable
,但在接收到配置更新后取消正在运行的Observable
时遇到了问题。
我想的是像switchMap
运算符这样的运算符,但反过来,当源Observable
中有新的值时,我们就取消对映射Observable
的订阅,而订阅一个新的值。
如下所示:
configuration.
reverseSwitchMap {
createMyObservable(it.somethingFromConfiguration) // this observable get's recreated for each configuration update
}.subscribe {
// here I'm receiving values from myObservable
}
有没有可以帮我解决这个问题的接线员?
发布于 2018-10-16 21:11:59
这正是switchMap的作用所在。
这应该是可行的:
fun startUpdates() {
configuration.toObservable()
.switchMap { configuration -> MyObservable(configuration) }
.subscribe { //do something }
}
发布于 2018-10-11 06:26:09
我认为我把这个问题复杂化了,所以现在我创建的解决方案是这样的:
private val disposable: Disposable? = null
fun startUpdates() {
configuration.toObservable()
.forEach { configuration ->
disposable?.dispose
disposable = MyObservable(configuration)
.subscribe { //do something }
}
}
现在已经足够了,不过我会把这个问题留下来,以防有人找到更好的解决方案。
https://stackoverflow.com/questions/52748827
复制相似问题