以RxJava的方式将一个可观察到的修改结果从一个类传递到另一个类?

时间:2018-10-06 15:44:36

标签: android kotlin observable rx-java2

我希望将结果从B类传递到A类作为可观察性

  1. Api类进行网络调用,并将myResult(通过Single.fromCallable())传递给B类
  2. B类收到myResult并对其进行修改
  3. 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
        }
    }
}

1 个答案:

答案 0 :(得分:0)

如果我正确理解了您想在ClassA中检索数据并在ClassB中对其进行修改,然后将其传递回ClassA。听起来您可以使用简单的Single.map来实现。 将方法添加到返回Function<Result,ModifiedResult>的ClassB中,并在ClassA中的.map(ClassB.methodThatReturnsFunction())之前使用subscribeBy

第二个选项添加了类似的方法,但是该方法返回

SingleTransformer<Result,ModifiedResult> 并与  Single.compose

这样,您就可以编写自己的流并将其封装在ClassB中。

希望有帮助。