【发布时间】:2019-05-05 19:08:00
【问题描述】:
我想在Subscribe函数中返回Observable,但是看了文档说不可能。 所以我尝试通过使用地图功能来做到这一点。但是,它产生了错误。
这是代码:
interface DataSource {
fun getItem() : Observable<List<RetroCrypto>>
}
//
object RemoteDataSource : DataSource {
private val myCompositeDisposable by lazy { CompositeDisposable() }
override fun getItem() : Observable<List<RetroCrypto>> {
val retrofit = RetroClient.getRetrofit()
val requestInterface = retrofit.create(GetData::class.java)
myCompositeDisposable.add(requestInterface.getData()
// Send the Observable’s notifications to the main UI thread
.observeOn(AndroidSchedulers.mainThread())
// Subscribe to the Observer away from the main UI thread
.subscribeOn(Schedulers.io())
.map { return it }
)
}
}
getRetrofit 是构建改造实例的方法。
我不知道为什么上面的代码会产生错误。
错误是
1. Return is not allowed here
2. Type mismatch. Required : Observable<List<RetroCrypto>> , Found : List<RetroCrypto>
如何修复代码?
【问题讨论】:
-
您可以使用
.flatMap()或.concatMap()代替.map() -
感谢您的回答!我以前用过 .flatMap() 。但是,仍然生成“此处不允许重新运行”。
-
这是我之前做的代码。 .flatMap { return Observable.just(it) }