2016-11-18 85 views

回答

0

如果你想比你需要使用合并操作

http://reactivex.io/documentation/operators/merge.html

Observable.mergeDelayError(
       dataRequestOne.subscribeOn(Schedulers.newThread()), 
       dataRequestTwo.subscribeOn(Schedulers.newThread()) 
     ) 
+0

为什么大家都使用'newThread'而不是'io'或'cpu'? –

0

使用串行响应在onNext为每个请求平行:

Observable.merge(dataRequestOne, dataRequestTwo) 

编号:

Observable.concat(dataRequestOne, dataRequestTwo); 
+0

如果可观察对象位于不同的线程上,'merge'只能并行工作。 –

0

要做到这一点是可以做到这一点:

Observable.just(dataRequestOne, dataRequestTwo).flatMap(new Func1<Data, Observable<Data>>() { 
     @Override 
     public Observable<Data> call(Data data) { 
      return Observable.just(data) 
          .subscribeOn(Schedulers.io); 
     } 
    }); 

现在每个请求将在一个单独的线程处理。 FlatMap还有一个可选的maxConcurrent参数,所以如果你有更多的观察值,你可以控制处理请求的线程数量(如果有必要的话)。