首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >与RxJava2中的switchMap运算符相反

与RxJava2中的switchMap运算符相反
EN

Stack Overflow用户
提问于 2018-10-11 05:09:19
回答 2查看 73关注 0票数 0

我有配置Observable,我正在订阅并启动我自己的Observable,但在接收到配置更新后取消正在运行的Observable时遇到了问题。

我想的是像switchMap运算符这样的运算符,但反过来,当源Observable中有新的值时,我们就取消对映射Observable的订阅,而订阅一个新的值。

如下所示:

代码语言:javascript
复制
configuration.
    reverseSwitchMap {
        createMyObservable(it.somethingFromConfiguration) // this observable get's recreated for each configuration update
    }.subscribe {
        // here I'm receiving values from myObservable
    }

有没有可以帮我解决这个问题的接线员?

EN

回答 2

Stack Overflow用户

发布于 2018-10-16 21:11:59

这正是switchMap的作用所在。

这应该是可行的:

代码语言:javascript
复制
fun startUpdates() {
    configuration.toObservable()
        .switchMap { configuration -> MyObservable(configuration) }                  
        .subscribe { //do something }
}
票数 1
EN

Stack Overflow用户

发布于 2018-10-11 06:26:09

我认为我把这个问题复杂化了,所以现在我创建的解决方案是这样的:

代码语言:javascript
复制
private val disposable: Disposable? = null

fun startUpdates() {
    configuration.toObservable()
        .forEach { configuration ->
            disposable?.dispose
            disposable = MyObservable(configuration)
                .subscribe { //do something }
        }
}

现在已经足够了,不过我会把这个问题留下来,以防有人找到更好的解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52748827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档