title: When should I use blockingGet?
body: <p>I am using RxJava a lot for work and seen some examples of calling a method which returns an Observable or Single and then calling blockingGet on it to use the results in a different . I was thinking this might be a misuse of the library and the concept but I might be wrong. I will give a small example:</p>
  
  <pre class="lang-java prettyprint-override"><code>   public Observable&lt;String&gt; getStrings(){
       // return sg
     }
  
     public Observable&lt;String&gt; getNames(){
       // return names
     }
  
     public Observable&lt;String&gt; filterNamesInStrings() {
       List&lt;String&gt; names = getNames().toList().blockingGet();
  
       return getStrings().filter(str -&gt; /*is str in names list*/)
     }   
  </code></pre>
  
  <p>The <code>filterNamesInStrings</code> could also be solved by:</p>
  
  <pre class="lang-java prettyprint-override"><code>   getNames()
      .toList()
      .flatMapObservable(names-&gt; 
         getStrings().filter(str -&gt; /*is str in names list*/)
  </code></pre>
  
  <p>My intuition is that the second solution is better, but the only reason I have is that I feel with using blockingGet we kind of break the chain of observables, lose the laziness (I'm not sure tho how lazy Rx is) but I did not find anything to prove my points also nothing to further explain that the second is better. Also if I am right I don't see any other use case for blocking get than quick testing, is that true?</p>
  
  <p>My questions: </p>
  
  <ul>
  <li>Is my question a valid one or the difference is negligible between the implementations?</li>
  <li>Is any of the solutions better/more true to the library than the other, if so why and is there a valid reason to use blockingGet then?</li>
  <li>(Optional: Could you recommend me a good book on understanding the depths of ReactiveX, so I get explanations for questions like this and also a "good practices" list/book would be handy)</li>
  </ul>