Rx java 我应该什么时候使用blockingGet?

Rx java 我应该什么时候使用blockingGet?,rx-java,reactivex,Rx Java,Reactivex,我在工作中经常使用RxJava,并看到了一些调用一个方法的示例,该方法返回一个可观察的或单个的,然后调用blockingGet以不同的方式使用结果。我想这可能是对图书馆和概念的误用,但我可能错了。我将举一个小例子: 公共可观察的getStrings(){ //返回sg } 公共可观察的getNames(){ //返回名称 } 公共可观察过滤器安装(){ 列表名称=getNames().toList().blockingGet(); return getStrings().filter(str->

我在工作中经常使用RxJava,并看到了一些调用一个方法的示例,该方法返回一个可观察的或单个的,然后调用blockingGet以不同的方式使用结果。我想这可能是对图书馆和概念的误用,但我可能错了。我将举一个小例子:

公共可观察的getStrings(){
//返回sg
}
公共可观察的getNames(){
//返回名称
}
公共可观察过滤器安装(){
列表名称=getNames().toList().blockingGet();
return getStrings().filter(str->/*是名称列表中的str*/)
}   
filterNamesInStrings
也可以通过以下方法解决:

getNames()
托利斯先生()
.flatMapObservable(名称->
getStrings().filter(str->/*是名称列表中的str*/)
我的直觉是,第二种解决方案更好,但我唯一的原因是,我觉得使用blockingGet可以打破观察链,失去惰性(我不确定Rx有多懒)但是我没有找到任何东西来证明我的观点,也没有任何东西来进一步解释第二种方法更好。如果我是对的,我没有看到任何其他的阻塞get的用例比快速测试更好,这是真的吗

我的问题是:

  • 我的问题是正确的还是两种实现之间的差异可以忽略不计
  • 是否有任何一种解决方案比另一种更好/更符合库的要求,如果是,为什么使用blockingGet?是否有充分的理由使用blockingGet
  • (可选:你能给我推荐一本关于理解ReactiveX深度的好书吗,这样我就可以得到关于此类问题的解释,还有一本“良好实践”列表/书也很方便)
我的问题是正确的还是两种实现之间的差异可以忽略不计

blockingGet
阻塞当前线程,因此您几乎肯定不希望在测试之外调用它。第二个示例是正确的方法

是否有任何一种解决方案比另一种更好/更符合库的要求,如果是,为什么使用blockingGet?是否有充分的理由使用blockingGet

主要测试。或者很少测试,当使用完全同步的代码时,阻塞实际上从未发生

了解ReactiveX的深度

没有这样深度的书。所有关于RxJava的书都很好读