android - 如何正确处理 subcribe() 方法?
问题描述
我的代码中的方法一直有问题subscribe()
(下面是调试控制台的消息)
io.reactivex.exceptions.OnErrorNotImplementedException: The exception was not handled due to missing onError handler in the subscribe() method call. Further reading: https://github.com/ReactiveX/RxJava/wiki/Error-Handling | Expected a string but was BEGIN_OBJECT at line 1 column 2 path $
而且我不知道如何使它正确,这是我的部分代码开始的地方
private fun startSearch(query: String) {
disposables.addAll(IMyService.searchCourse(query)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe ({ courses ->
adapter = CourseAdapter(baseContext, courses)
recycler_search.adapter = adapter
}, {
Toast.makeText(this, "Not found", Toast.LENGTH_LONG).show()
}))
}
private fun getAllCourses() {
disposables.addAll(IMyService.coursesList
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe ({ courses ->
adapter = CourseAdapter(baseContext, courses)
recycler_search.adapter = adapter
}, {
Toast.makeText(this, "Not found", Toast.LENGTH_LONG).show()
}))
}
并且有完整的代码
解决方案
在响应式编程中,将订阅者传递给 Observable 应该涉及如何处理三种情况:
- 成功
- 错误
- 失败
但是,如果您只是想传递一个您确定不会有任何错误或任何失败并且确定它总是会成功的订阅者,那么只需尝试@EpicPandaForce 提到的 onSuccess 或 onFailure。然而,一个好的做法是始终实施您永远不知道的三种情况。
推荐阅读
- avahi - 网络系统中的 yocto 中的 Avahi
- c++ - 服务器端的recv函数,如果连接丢失,给我-1而不是0
- vulkan - 关于 MoltenVK 上 VK_KHR_portability_subset 的 Vulkan 验证警告 catch-22
- html - 如何使用 CSS 实现这个时间线?
- signalr - SignalR 从客户端方法返回值
- assembly - 执行 DIV #0 和 DIVF #0 指令的结果是什么?
- javascript - 将 Typescript 与 Vue 一起使用时的错误
- python - pyModbusTCP Raspberry Pi 到 PC 连接 eth0
- typescript - tsconfig 文件以包含空文件夹,忽略空文件
- reactjs - React bulma 的容器与 sass 的容器冲突