您好,我是RxJava和Kotlin的新手,我对它失去了一些概念。
我有这样的"api“:
interface VehiclesService {
@GET("/vehicles/")
fun getVehicles(): Single<List<Vehicle>>
}
然后,我创建了翻新客户端,等等。如下所示:
var retrofit = RetrofitClient().getInstance()
vehiclesAPI = retrofit!!.create(VehiclesService ::class.java)
最后,我做这个调用:
private fun fetchData() {
compositeDisposable.add(vehiclesAPI .getVehicles()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe { vehicles -> displayData(vehicles) }
)
}
这里是我尝试启动时出现错误的地方:
The exception was not handled due to missing onError handler in the subscribe() method call
我知道这个错误是非常明显的。所以我知道缺少了什么,但我不知道如何处理这个错误。
我尝试添加:.doOnError { error -> Log.d("MainClass",error.message) }
,但仍然显示相同的错误消息。
发布于 2018-09-24 01:58:00
您可以将另一个lambda传递给subscribe
来处理特定流的错误,如下所示:
private fun fetchData() {
compositeDisposable.add(vehiclesAPI .getVehicles()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe( { vehicles -> displayData(vehicles) }, { throwable -> //handle error } )
)
}
附注:doOnError
和其他Side Effect操作符,不会以任何方式影响流,它们只是预期为副作用操作发出的值,例如日志。
https://stackoverflow.com/questions/52468708
复制相似问题