Как я могу условно добавить асинхронную операцию в середине потока RxJava?

Вот упрощенная версия того, что я пытаюсь сделать (используя Kotlin и RxJava)

makeServerCall() .doOnNext { doStuff(it) } //TODO: if it == 0, call asyncOperation() and wait for its callback to fire //before running the rest of the stream. Otherwise immediately run the rest //of the stream .flatMap { observable1(it) observable2(it) Observable.merge( getSpotSearchObservable(observable1), getSpotSearchObservable(observable2) } .subscribeBy(onNext = { allDone() view? }) 

Как я могу сжать вызов asyncOperation() и заставить остальную часть потока ждать, пока его обратный вызов будет asyncOperation() , но только при выполнении определенного условия? Кажется, что это, вероятно, тривиальная операция в Rx, но очевидное решение не приходит на ум.

FlatMap это!

 .flatMap { if (it == 0) { return@flatMap asyncOperation() .ignoreElements() .andThen(Observable.just(0)) } return@flatMap Observable.just(it) } .flatMap { observable1(it) observable2(it) Observable.merge( getSpotSearchObservable(observable1), getSpotSearchObservable(observable2) ) } 
Intereting Posts
Kotlin Android Studio / IntelliJ "Может быть объединено с назначением" Предупреждение об осмотре Не удалось добавить mysql-коннектор в build.gradle для проекта kotlin? Лучший способ сопоставить объекты данных Kotlin с объектами данных Почему параметр Integer метода Java сопоставляется с Int, а не с типом платформы? Firebase Storage OnsuceessListner в котлин не показывается Кинжал 2 с несколькими кольцами с Kotlin Альтернативы полем бокса или расширению ВСЕХ строк в Котлине? Как я могу сфотографировать свой sdk, закодированный с kotlin (и избавиться от метаданных) Можно ли применить одну аннотацию к нескольким целевым объектам в Котлин? Объявление об отказе от рекламы Kotlin REPL не работает с Pair Основы Kotlin: как добавить или установить элемент карты? Я не могу найти метод populateViewHolder в классе FirebaseRecyclerAdapter Вызывается: rx.exceptions.MissingBackpressureException Пользовательский тип Kotlin Generics с использованием подстановочного знака Котлинская последовательность «пропускает» первые N записей