La suscripción de rx kotlin no funciona, no recibe artículos
Creé una function que devuelve un Observable<String>
con nombres de file, pero no obtengo ningún evento en mi suscripción donde llamo a este método. Además, no hay ninguna llamada de onError o onComplete
Ver mi código:
fun getAllFiles(): Observable<String> { val allFiles = File("/Users/stephan/Projects/Playground/kotlinfiles/") .listFiles { file -> !file.isDirectory() } return observable { subscriber -> allFiles.toObservable() .map { f -> "${f.name}" } .doOnNext { println("Found file $it") } .subscribe { subscriber} } } fun test() { getAllFiles() .doOnNext { println("File name$it") } .subscribe( {n -> println("File: $n")}, {e -> println("Damn: $e")}, {println("Completed")}) }
Aunque se llama a todo en la function getAllFiles()
, entonces ¿qué me estoy perdiendo?
- Comportamiento con Kotlin Higher-Order Functions e interfaces de método único?
- Llamada asincrónica para cada elemento dentro de una colección
- La biblioteca de Kotlin 'rxkotlin-0.21.0.jar' tiene un formatting no compatible. Actualice la biblioteca o el complemento
- RxKotlin flattenAsObservable (): no coincide con el método de reference
- Múltiples requestes de modificación2 usando Flowable en Kotlin
- ¿Cómo puedo agregar de manera condicional una operación asincrónica en medio de una transmisión de RxJava?
- RxKotlin - matriz de observadores dynamics
- ¿Cómo corotines de Kotlin son mejores que RxKotlin?
- Cómo pasar nulo a un Observable con tipo anulable en RxJava 2 y Kotlin
- ¿Puedo crear un método de extensión Kotlin para agregar una suscripción rxJava a una suscripción compuesta?
- RxJava (Kotlin), Observable.amb y PublishSubject no están disparando
- Rx-Kotlin awaitTerminalEvent nunca se sube a Completo
- Kotlin con stack RxKotlinFX da un error de class de acceso
observable
es para crear un Observable desde cero pero ya tiene Observable<String>
de toObservable()
por lo que no lo necesita. El siguiente código funciona para mí:
fun getAllFiles(): Observable<String> { val allFiles = File("/Users/stephan/Projects/Playground/kotlinfiles/") .listFiles { file -> !file.isDirectory } return allFiles.toObservable() .map { f -> "${f.name}" } } fun test() { getAllFiles() .doOnNext { println("File name $it") } .subscribe( { n -> println("File: $n") }, { e -> println("Damn: $e") }, { println("Completed") }) }
También puedes solucionar esto cambiando de:
.subscribe{subscriber}
a
.subscribe(subscriber)
pero esta versión anidada de Observable me resulta confusa.
- Poniendo un lambda genérico en un map
- No se pueden crear classs privadas con el mismo nombre en diferentes modules