¿Cómo puedo agregar de manera condicional una operación asincrónica en medio de una transmisión de RxJava?
Aquí hay una versión simplificada de lo que bash hacer (usando Kotlin y 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? })
¿Cómo aprieto la llamada a asyncOperation()
y hago que el rest de la transmisión espere a que se asyncOperation()
su callback, pero solo cuando se cumple una determinada condición? Parece que es probablemente una operación trivial en Rx, pero no viene a la mente ninguna solución obvia.
- RxAndroid, cómo detectar si observable ha finalizado la emisión
- Para una function de Kotlin utilizada como expresión, ¿hay una forma concisa de operar y devolver un valor?
- RxKotlin - Single.just () no se emite al suscribirse TestSubscriber
- cómo implementar Switch usando Data binding en android
- No se puede cambiar el text de ActionMenuItemView con RxKotlin
- Kotlin con stack RxKotlinFX da un error de class de acceso
- Llamada asincrónica para cada elemento dentro de una colección
- RxJava (Kotlin), Observable.amb y PublishSubject no están disparando
- Rx-Kotlin awaitTerminalEvent nunca se sube a Completo
- RxJava - ¿Entradas de keyboard de contrapresión?
- Inyectar constructor y object complementario
- Comportamiento con Kotlin Higher-Order Functions e interfaces de método único?
- Agregar subscribeOn () está cambiando el tipo de retorno de observable
¡FlatMap it!
.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) ) }