Android 返回带有fromCallable的observable的类型不匹配

Android 返回带有fromCallable的observable的类型不匹配,android,kotlin,rx-java,Android,Kotlin,Rx Java,以下代码未编译: override fun storeConnections(connections: List<Connection>): Observable<List<Connection>> = Observable.fromCallable<List<Connection>> { appDao.storeConnections(connections.map {

以下代码未编译:

override fun storeConnections(connections: List<Connection>): Observable<List<Connection>> =
    Observable.fromCallable<List<Connection>> {
        appDao.storeConnections(connections.map {
                            mapper.toDb(it)})
        
        
    }

如何从Callable正确实现此功能?

使其正常工作的关键是使用以下功能:

return@fromCallable connections
这是正确的代码:

override fun storeConnections(connections: List<Connection>): Observable<List<Connection>> =
    Observable.fromCallable<List<Connection>> {

        appDao.storeConnections(connections.map {
            mapper.toDb(it)
        })

        return@fromCallable connections
    }

鉴于你对你的问题的答复:

storeConnections没有返回任何内容。但是我需要用一个可观察的东西来包装它,以便把它推到下游。所以,我的问题可能是,当API调用没有返回任何内容时,如何用可观察的内容包装API调用

我将回答你如何把它包装成一个可观察的东西,以便把它推到下游:

        .flatMap {
                connections -> 
                    App.context.repository.storeConnections(connections)
                        .andThen(Observable.just(connections))
        }
假定storeConnections返回一个Completable:

    override fun storeConnections(connections: List<Connection>): Completable =
        Completable.fromAction {
            appDao.storeConnections(connections.map { mapper.toDb(it) } )
        }
    }

很难说,除非你具体说明这种乐趣应该做什么。为什么
storeConnections
会返回obervable?它在观察什么?@timcastelijs,这就是问题所在。storeConnections没有返回任何内容。但是我需要用一个可观察的东西来包装它,以便把它推到下游。所以,我的问题可能是,当API调用没有返回任何内容时,如何用可观察的内容包装API调用。我看到的大多数示例都从api返回了一些东西。但是这一个不需要用一个可观察的东西来包装它,以便把它推到下游。你能澄清一下吗?函数
mapper.toDb(it)
返回什么?我更新了我的问题,并显示了调用storeConnections的代码。在平面图中使用fromCallable调用它,该平面图需要一个Observable。
val startPositions = BehaviorSubject.createDefault(0)

    startPositions.flatMap { startPos -> App.context.repository.getConnections(startPos) }
        .flatMap {
                connections -> App.context.repository.storeConnections(connections)
        }
        .doOnNext {
                connections -> startPositions.onNext(startPos++)
        }
        .subscribe({ ind -> println("Index $ind") })
        .flatMap {
                connections -> 
                    App.context.repository.storeConnections(connections)
                        .andThen(Observable.just(connections))
        }
    override fun storeConnections(connections: List<Connection>): Completable =
        Completable.fromAction {
            appDao.storeConnections(connections.map { mapper.toDb(it) } )
        }
    }
        .flatMap {
                connections -> 
                    Completable.fromAction { App.context.repository.storeConnections(connections) }
                        .andThen(Observable.just(connections))
        }