J'ai créé une fonction qui renvoie un Observable<String>
avec des noms de fichiers, mais je n'obtiens aucun événement dans mon abonnement où j'appelle cette méthode. De plus il n'y a pas d'appel de onError ou onComplete
Voir mon code:L'abonnement rx kotlin ne fonctionne pas, ne reçoit pas les articles
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")})
}
Bien que tout est appelé dans la fonction getAllFiles()
, donc ce que je manque?
votre réponse fonctionne, mais je me demande pourquoi 'toObservable()' est utilisé dans les exemples de rxkotlin. https://github.com/ReactiveX/RxKotlin/blob/0.x/src/examples/kotlin/rx/lang/kotlin/examples/examples.kt#L45 – EarlOfEgo
@EarlOfEgo un peu bizarre. Je suppose que juste pour la démonstration. Si vous vérifiez l'histoire de git, vous verrez comment cela se passe. À un tout premier engagement, cela a plus de sens: https://github.com/ReactiveX/RxKotlin/commit/d365846fa8502566132fd8d53b7e83aaa5bc452e#diff-3f0526ee70e691c01cb9149a4ccbca03R32 – pt2121