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()函数中的所有内容都被调用,但是我错过了什么?

observable是从头开始创建一个Observable,但是你已经有了toObservable() Observable<String> ,所以你不需要它。 下面的代码适用于我:

 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版本让我感到困惑。