zip
does run the observables in parallel - but it also subscribes to them serially. Since your getNumberedObservable
is completing in the subscription method it gives the impression of running serially, but there is in fact no such limitation.
You can either try with some long running Observables that outlive their subscription logic, such as timer
, or use the subscribeOn
method to subscribe asynchronously to each stream passed to zip
.