Emit value, если определенное время прошло после последнего элемента - PullRequest
0 голосов
/ 30 июня 2018

У меня есть наблюдаемое: Observable.create<Boolean> {emitter = it}, к которому я добавляю некоторые значения. Я хочу, чтобы он опубликовал «ложное» значение, как только пройдет определенный период времени, и никакое значение не будет отправлено этому эмиттеру.

Как это возможно с RxJava / Kotlin 2?

1 Ответ

0 голосов
/ 30 июня 2018

Вы можете попробовать объединить 2 функции: timeout и onErrorReturn.

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") }
...