There is a forkJoin statement that will run all observable sequences in parallel and collect their last elements. (cited in the documentation). But if you use this one, you will have to wait until all 5 promises succeed, or one of 5 is a mistake. It is a close equivalent of RSVP.all or jQuery.when . So this will not allow you to do something if you have a second. I mention this in any case, if it might be useful to you in another case.
Another possibility is to use concatMap , which will allow you to get resolved promises in order. However, I do not have a clear idea that they will be launched in parallel, the second promise should begin only when the first has been resolved.
The last option I can think of is to use merge(2) , which should run two promises in parallel, and at any time they will be only two promises that will be launched.
Now, if you are not using defer , and using concatMap , I believe that you should run the entire AJAX request and still order correctly. Therefore you can write:
.concatMap(function(page) { return $.get(page); })
Relevant documentation:
source share