我希望将结果从B类传递到A类作为可观察性
B类需要将修改后的结果(或任何错误)传递给进行初始调用的A类(A类调用ClassB的方法以进行api调用)
,如何以反应式/ RxJava方式执行步骤3?
不确定Map是否是我要寻找的东西,但是任何有效的示例都将极大地帮助您。另外,A类,B类和Api类之间必须有分隔
Class A {
CalssB.MethodB()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeBy(onError = {//handle error
}, onSuccess = {
// handle success i.e myResult = it
})
}
Class B {
fun methodB(): Single<MyResult> {
var myResult = MyResult()
api.getMyResult()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeBy(
onSuccess = {
//3 - here is I need help , modify result and pass it as an observable to class A where (CalssB.MethodB() is called)
}
, onError = {
//3 - here is I need help , pass Error to Class A where (CalssB.MethodB() is called)
}
)
}
Api {
public Single<MyResult> getMyResult() {
return Single.fromCallable(() -> doGetMyResult()); //network call
}
}
}
答案 0 :(得分:0)
如果我正确理解了您想在ClassA中检索数据并在ClassB中对其进行修改,然后将其传递回ClassA。听起来您可以使用简单的Single.map
来实现。
将方法添加到返回Function<Result,ModifiedResult>
的ClassB中,并在ClassA中的.map(ClassB.methodThatReturnsFunction())
之前使用subscribeBy
。
第二个选项添加了类似的方法,但是该方法返回
SingleTransformer<Result,ModifiedResult>
并与
Single.compose
。
这样,您就可以编写自己的流并将其封装在ClassB中。
希望有帮助。