我创建了一个函数,它返回一个带有文件名的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()
函数中调用了所有内容,但我还缺少什么?
答案 0 :(得分:9)
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)
但是这个嵌套的Observable版本对我来说很困惑。