rx kotlin 订阅不工作,不接收项目
rx kotlin subscription not working, not receiving items
我创建了一个函数,其中 returns 一个带有文件名的 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 版本让我感到困惑。
我创建了一个函数,其中 returns 一个带有文件名的 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 版本让我感到困惑。