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

问题描述 投票:0回答:1
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并行化调用?

java rx-java
1个回答
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));

© www.soinside.com 2019 - 2024. All rights reserved.