Sobes.tech
Junior — Middle

Como é que, usando RxJava, podemos executar duas chamadas de rede em paralelo e combinar os seus resultados?

sobes.tech IA

Resposta da IA

No RxJava, para executar duas chamadas de rede em paralelo e combinar os seus resultados, pode usar o operador zip. Ele permite iniciar ambas as chamadas simultaneamente e obter os seus resultados quando ambas terminarem.

Exemplo:

Single<Result1> call1 = api.getData1();
Single<Result2> call2 = api.getData2();

Single.zip(call1, call2, (result1, result2) -> {
    // combinar resultados
    return new CombinedResult(result1, result2);
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(combinedResult -> {
    // processamento do resultado combinado
}, throwable -> {
    // tratamento do erro
});

Aqui, ambas as chamadas são executadas em paralelo numa thread de E/S, e o resultado é combinado e passado para a thread principal para processamento.