如何使用 RxJava 执行有序合并?

How can I perform an ordered merge with RxJava?

我正在执行 3 个 HTTP 请求。我想同时触发所有请求,等待所有请求完成,然后在保留序列顺序的同时合并三个请求。假设我有请求 r1r2r3,我想按该顺序处理结果。我试过这个:

Observable<HttpResponse> r1, r2, r3;
Observable<List<HttpResponse>> merged = Observable.merge(r1, r2, r3).buffer(3);

在这种情况下,不能保证 r3 是返回列表中的索引 2。建议?

当前的 RxJava 快照包含一个 concatMapEager 将立即 运行 它的源并一个接一个地加入它们。它将成为 1.0.15 的一部分,但我不知道 Netflix 何时发布它。如果您不想依赖快照,那么获取 the source 代码并手动将其提升到您的序列中。