title: RX: Run Zipped Observables in parallel?
body: <p>So I'm playing around with RX (really cool), and I've been converting my api that accesses a sqlite database in Android to return observables.</p>
  
  <p>So naturally one of the problems I started to try to solve is, "What if I want to make 3 API calls, get the results, and then do some processing once they are all finished?"</p>
  
  <p>It took me an hour or 2, but I eventually found the <a href="https://github.com/Netflix/RxJava/wiki/Combining-Observables#zip">Zip Functionality</a> and it helps me out handily:</p>
  
  <pre><code>    Observable&lt;Integer&gt; one = getNumberedObservable(1);
      Observable&lt;Integer&gt; two = getNumberedObservable(2);
      Observable&lt;Integer&gt; three = getNumberedObservable(3);
  
      Observable.zip(one, two, three, new Func3&lt;Integer, Integer, Integer, Integer&gt;() {
          @Override
          public Integer call(Integer arg0, Integer arg1, Integer arg2) {
              System.out.println("Zip0: " + arg0);
              System.out.println("Zip1: " + arg1);
              System.out.println("Zip2: " + arg2);
              return arg0 + arg1 + arg2;
          }
      }).subscribe(new Action1&lt;Integer&gt;() {
          @Override
          public void call(Integer arg0) {
              System.out.println("Zipped Result: " + arg0);
          }
      });
  
  public static Observable&lt;Integer&gt; getNumberedObservable(final int value) {
      return Observable.create(new OnSubscribeFunc&lt;Integer&gt;() {
          @Override
          public Subscription onSubscribe(Observer&lt;? super Integer&gt; observer) {
              observer.onNext(value);
              observer.onCompleted();
              return Subscriptions.empty();
          }
      });
  }
  </code></pre>
  
  <p>Great! So that's cool.</p>
  
  <p><strong>So when I zip up the 3 observables they run in serial. What if I want them all to run in parallel at the same time so I end up getting the results faster?</strong> I've played around with a few things, and even tried reading some of the original RX stuff people have written in C#. I'm sure there is a simple answer. Can anyone point me in the right direction? What is the proper way to do this?</p>