Rx java 动态修改可观察到的间隔类型

Rx java 动态修改可观察到的间隔类型,rx-java,rx-java2,Rx Java,Rx Java2,我正试图解决一个具体的问题。根据已经发出的信息,我想交替地将可观测数据从一种类型转换为另一种类型 例如: Observable.just(Math.random()).flatMap { item -> if (item > 0.5) { convert to interval type and repat new Math.random() every specific time interval } else { leave as it is } } 好吧,我知道我想出了这

我正试图解决一个具体的问题。根据已经发出的信息,我想交替地将可观测数据从一种类型转换为另一种类型

例如:

Observable.just(Math.random()).flatMap { item ->
 if (item > 0.5) {
convert to interval type and repat new Math.random() every specific time interval 
} else {
leave as it is
}
}
好吧,我知道我想出了这种幼稚的方法,对此我很不高兴

if (needToRepeat) {
make Observable.interval().flatMap { prepareObservable() }
} else { prepareObservable() }

fun prepareObservable() = Observable.just(Match.random()).map { boolean = it.boolean }

您可以尝试以下方法:

Observable.just(Math.random())
        .switchMap { item ->
            if (item > 0.5) {
                Observable.interval(1, TimeUnit.SECONDS).map { Math.random() }
            } else {
                Observable.just(item)
            }
        }
对于每个
项目
,如果满足条件,这将创建一个
可观察的
,每秒发出一个随机的


有了
switchMap
,每次外部
可观察的
发射一个新的
项目
,之前的内部
可观察的
就被处理掉了,这样你总是只得到最新的`可观察的

谢谢:)它的工作原理几乎和我想要的一样!当项目小于0.5时,是否有可能停止更新?对不起,Rx不是我喜欢的东西。当原始的可观察物发射一个项目时