4

ファイル名を返す関数を作成しましたが、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()関数で呼び出されていますが、何が欠けていますか?

4

1 に答える 1

9

observableObservable を最初から作成するためのものですが、すでにある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 バージョンは私にとって混乱を招きます。

于 2016-03-05T22:27:32.643 に答える