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