Sobes.tech
Junior — Middle

Jak pomocí RxJava provést dva síťové volání paralelně a sloučit jejich výsledky?

sobes.tech AI

Odpověď od AI

V RxJava pro paralelní provádění dvou síťových volání a jejich výsledků lze použít operátor zip. Umožňuje spustit obě volání současně a získat jejich výsledky, když obě dokončí.

Příklad:

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

Single.zip(call1, call2, (result1, result2) -> {
    // spojení výsledků
    return new CombinedResult(result1, result2);
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(combinedResult -> {
    // zpracování spojeného výsledku
}, throwable -> {
    // zpracování chyby
});

Zde jsou oba volání prováděna paralelně na IO vlákně a výsledek je spojován a předáván hlavnímu vláknu ke zpracování.