Sobes.tech
Junior — Middle

Ako pomocou RxJava paralelne vykonať dva sieťové volania a spojiť ich výsledky?

sobes.tech AI

Odpoveď od AI

V RxJava, pre paralelného vykonávania dvoch sieťových volaní a ich výsledkov môžete použiť operátor zip. Umožňuje spustiť obe volania súčasne a získať ich výsledky, keď obe dokončia.

Príklad:

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

Single.zip(call1, call2, (result1, result2) -> {
    // spojenie výsledkov
    return new CombinedResult(result1, result2);
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(combinedResult -> {
    // spracovanie spojeného výsledku
}, throwable -> {
    // spracovanie chyby
});

Tu sú oba volania vykonávané paralelne na IO vlákne a výsledok je spojený a odovzdaný na hlavné vlákno na spracovanie.