rxjava2从现有Callback函数创建Observable的最佳实践

时间:2017-10-12 12:30:08

标签: android rx-java2

我是rxjava2的新手,我想用它来处理我现有的代码来解决忽略Callback地狱的问题。主要任务类似于以下代码:

SomeTask.execute(new Callback() {
    @Override
    public void onSuccess(Data data) {
        // I want to add data into observable stream here
    }
    @Override
    public void onFailure(String errorMessage) {
        // I want to perform some different operations 
        // to errorMessage rather than the data in `onSuccess` callback.
        // I am not sure if I should split the data stream into two different Observable streams 
        // and use different Observers to accomplish different logic.
        // and I don't know how to do it.
    }
}

我已经在Google和Stackoverflow中进行了一些挖掘,但仍未找到创建可观察的完美解决方案来实现这两个目标。

  1. 包装现有的回调函数。
  2. 以不同的逻辑处理不同的回调数据。
  3. 任何建议都会有很大的帮助。

1 个答案:

答案 0 :(得分:2)

看看这个article。它会对你有所帮助。

以下是您问题的可能解决方案(Kotlin):

Observable.create<Data> { emitter ->
        SomeTask.execute(object: Callback() {

            override void onSuccess(data: Data) {
                emitter.onNext(data)
                emitter.onComplete()
            }

            override void onFailure(errorMessage: String) {
                // Here you must pass the Exception, not the message
                emitter.onError(exception)
            }
        }
}
  

不要忘记订阅和处置Observable。

您还必须考虑使用Single,Maybe或任何其他Observable类型。