如何使用RxJava并行化网络调用?

时间:2019-03-15 14:16:20

标签: java rx-java

final List<Order> orders = Observable
            .from(searchAttributes)
            .filter(searchAttribute-> !searchAttribute.isEmpty())
            .flatMap(searchAttribute-> Observable.just(networkCall(searchAttribute)).subscribeOn(Schedulers.io()))
            .toList()
            .toBlocking()
            .single();

我正在使用以下文章来学习RxJava: https://proandroiddev.com/understanding-rxjava-subscribeon-and-observeon-744b0c6a41ea

在上面的代码中,networkCall函数应该在单独的IO线程上发生,但是网络调用基本上在同一个IO线程上依次发生。如何使用RxJava并行调用?

1 个答案:

答案 0 :(得分:0)

使用RxJava 2可以使用.parallel

来自this answer

Flowable<Integer> vals = Flowable.range(1, 10);

vals.parallel()
        .runOn(Schedulers.computation())
        .map(i -> intenseCalculation(i))
        .sequential()
        .subscribe(val -> System.out.println(val));