Как распараллелить сетевые вызовы, используя RxJava? - PullRequest
0 голосов
/ 15 марта 2019
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 должна выполняться в отдельном потоке ввода-вывода, однако сетевой вызов происходит в том же потоке ввода-вывода в основном последовательно. Как распараллелить вызов с помощью RxJava?

1 Ответ

0 голосов
/ 15 марта 2019

С RxJava 2 можно использовать .parallel.

С этот ответ :

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

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

...