Разбить квартируMapIterable l oop RXJava - PullRequest
0 голосов
/ 25 марта 2020

У меня есть один список, и я повторяю его через flatMapIterable. Тем не менее, я хочу прервать итерацию, если какой-то конкретный элемент c окажется между итерацией. Например,

 val list = Single.just(listOf<Int>(1,2,3,4,5,6))
            .toObservable()
            .flatMapIterable { it }
            .map {
                if(it == 3 ) TODO(" Break the iteration here.")
            }

Если я хочу повторить список 1..6, и я хочу остановить итерацию, если между ними будет 3, как я могу это сделать?

1 Ответ

0 голосов
/ 26 марта 2020

Вы можете попробовать takeUntil operator

Это будет выглядеть следующим образом:

Observable.fromIterable(listOf<Int>(1,2,3,4,5,6))
            .takeUntil{ it != 3 }

Если вы хотите игнорировать 3, вы можете использовать skipLast оператор:

Observable.fromIterable(listOf<Int>(1,2,3,4,5,6))
            .takeUntil{ it != 3 }
            .skipLast(1)
...