Вы можете попробовать что-то вроде этого:
Observable.just(Math.random())
.switchMap { item ->
if (item > 0.5) {
Observable.interval(1, TimeUnit.SECONDS).map { Math.random() }
} else {
Observable.just(item)
}
}
Для каждого item
, если условие выполнено, это создаст Observable
, излучающий случайный Double
каждую секунду.
При switchMap
каждый раз, когда внешний Observable
испускает новый item
, предыдущий внутренний Observable
удаляется, так что вы всегда получаете выбросы только самого последнего `Observable.