我是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中进行了一些挖掘,但仍未找到创建可观察的完美解决方案来实现这两个目标。
任何建议都会有很大的帮助。
答案 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类型。