rx kotlin подписка не работает, не получает предметы
Я создал функцию, которая возвращает Observable<String>
с именами файлов, но я не получаю никакого события в моей подписке, где я вызываю этот метод. Также нет вызова onError или onComplete
Смотрите мой код:
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")})
}
Хотя все зовется в getAllFiles()
функция, так что мне не хватает?
1 ответ
Решение
observable
для создания Observable с нуля, но у вас уже есть Observable<String>
от toObservable()
так что тебе это не нужно. Код ниже работает для меня:
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") })
}
Вы также можете исправить это, изменив с:
.subscribe{subscriber}
в
.subscribe(subscriber)
но эта вложенная Наблюдаемая версия сбивает меня с толку.