Sobes.tech
Junior — Middle

Cum se pot executa în paralel două apeluri de rețea folosind RxJava și cum se pot combina rezultatele lor?

sobes.tech AI

Răspuns de la AI

În RxJava, pentru a executa două apeluri de rețea în paralel și a combina rezultatele lor, poți folosi operatorul zip. Acesta permite lansarea ambelor apeluri simultan și obținerea rezultatelor lor atunci când ambele se finalizează.

Exemplu:

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

Single.zip(call1, call2, (result1, result2) -> {
    // combinăm rezultatele
    return new CombinedResult(result1, result2);
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(combinedResult -> {
    // procesarea rezultatului combinat
}, throwable -> {
    // tratarea erorii
});

Aici, ambele apeluri sunt executate în paralel pe un fir de IO, iar rezultatul este combinat și transmis pe firul principal pentru procesare.