如何在RxAndroid2中组合两条代码链?

如何在RxAndroid2中组合两条代码链?,android,rx-java2,Android,Rx Java2,我需要从共享首选项请求一些数据,并进行一些检查以更新共享首选项 然后返回布尔值,我需要在计算线程中保留它。如果返回值为真,我需要继续下面的代码,否则我需要调用doSomething2() 我的问题是我应该如何组合这两部分代码 其中第一部分是可流动的。just(isPayable())应该在计算线程中订阅并基于返回值继续使用现有解决方案 .update(info) .observeOn(mMainThreadScheduler) .subscribe(() -> doSomething

我需要从共享首选项请求一些数据,并进行一些检查以更新共享首选项 然后返回布尔值,我需要在计算线程中保留它。如果返回值为真,我需要继续下面的代码,否则我需要调用doSomething2() 我的问题是我应该如何组合这两部分代码 其中第一部分是
可流动的。just(isPayable())
应该在计算线程中订阅并基于返回值继续使用现有解决方案

 .update(info)
 .observeOn(mMainThreadScheduler)
 .subscribe(() -> doSomething1{
           }),
          (Throwable throwable) -> doSomething2())
不要使用
Flow.just(isPayable())
-它可能不会在计算计划程序中执行。 任用
Flow.defer(()->Flow.just(isPayable())

Flow.fromCallable(()->isPayable())

结果是:

Flow.fromCallable(() ->isPayable() )
.flatMap(value->
  if(value){ doSomething1() }else { doSomething2() }
.subscribeOn(Schedulers.computation())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({},{})
)
或者,如果您使用doSomething1()/doSomething2()执行一些UI操作,还可以将isPayable()==false标记为错误,以执行以下操作: Single.fromCallable(()->isPayable()) .map{value->if(value)返回值else抛出异常(“不可支付”)} .subscribeOn(Schedulers.computation()) .observeOn(AndroidSchedulers.mainThread()) .subscribe({doSomething1()},{doSomething2()})

不要使用
Flow.just(isPayable())
-它可能不会在计算计划程序中执行。 任用
Flow.defer(()->Flow.just(isPayable())

Flow.fromCallable(()->isPayable())

结果是:

Flow.fromCallable(() ->isPayable() )
.flatMap(value->
  if(value){ doSomething1() }else { doSomething2() }
.subscribeOn(Schedulers.computation())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({},{})
)
或者,如果您使用doSomething1()/doSomething2()执行一些UI操作,还可以将isPayable()==false标记为错误,以执行以下操作: Single.fromCallable(()->isPayable()) .map{value->if(value)返回值else抛出异常(“不可支付”)} .subscribeOn(Schedulers.computation()) .observeOn(AndroidSchedulers.mainThread())
.subscribe({doSomething1()},{doSomething2()})

谢谢@Lukas,我不理解你,而只是使用fromCallable()对吗?是的,因为just()是热可观察的,它在当前线程中立即发出,不管subscribeeon(..)callThank@Lukas,我不理解你,而只是使用fromCallable()对吗?是的,因为just()是热可观察的,它在当前线程中立即发出,而不管subscribeOn(..)调用如何