【问题标题】:How to handle a subcribe() method correctly?如何正确处理 subscribe() 方法?
【发布时间】:2020-04-27 15:05:16
【问题描述】:

我的代码中的 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()
            }))
    }

还有完整的code

parameters

【问题讨论】:

  • 尝试使用 onSuccess = {onError = {,这样你就知道你传递的是什么 lambda

标签: android kotlin reactivex


【解决方案1】:

在反应式编程中,将订阅者传递给 Observable 应该涉及如何处理三种情况:

  1. 成功
  2. onError
  3. onFailure

但是,如果您只是想传递一个您确定不会有任何错误或任何失败并且确定它总是会成功的订阅者,那么只需尝试@EpicPandaForce 提到的 onSuccess 或 onFailure。然而,一个好的做法是始终实现您永远不知道的三种情况。

【讨论】:

  • 对不起,我不太明白我应该如何实现它,因为编译器已经显示了正确的上下文(我已经添加了它的截图)
猜你喜欢
  • 2017-08-03
  • 2010-12-08
  • 2011-02-28
  • 2016-01-15
  • 1970-01-01
  • 2016-05-02
  • 1970-01-01
  • 2010-09-20
  • 1970-01-01
相关资源
最近更新 更多