如果在最后一项之后经过了特定时间,则发出值

时间:2018-06-29 22:37:38

标签: java kotlin rx-java2 rx-android rx-kotlin2

我有一个可观察的:Observable.create<Boolean> {emitter = it},我在其中推了一些值。我希望它在某个特定时间段过去后立即发布“假”值,而不会将任何值推送到该发射器。

使用RxJava / Kotlin 2怎么可能?

1 个答案:

答案 0 :(得分:2)

您可以尝试合并两个功能:timeoutonErrorReturn

Observable.create<Boolean> { 
    // use emitter here
}
     .timeout(3, TimeUnit.SECONDS)
     .onErrorReturn { if (it is TimeoutException) false else throw it } 
     .subscribe { println("onNext $it") }

澄清后更新的代码段。 repeatWhen将重新订阅Observable。

Observable.create<Boolean> { 
    // use emitter here
}
    .timeout(3, TimeUnit.SECONDS)
    .onErrorReturn { if (it is TimeoutException) false else throw it }
    .repeatWhen { it }
    .subscribe { println("onNext $it") }