Sobes.tech
Junior — Middle

Hogyan lehet RxJava használatával két hálózati hívást párhuzamosan végrehajtani és az eredményeket összekapcsolni?

sobes.tech MI

Válasz az MI-től

Az RxJava-ban két hálózati hívást párhuzamosan végrehajtani és eredményeiket összekapcsolni az zip operátor segítségével lehet. Ez lehetővé teszi mindkét hívás egyidejű indítását, és az eredmények megkapását, amikor mindkettő befejeződik.

Példa:

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

Single.zip(call1, call2, (result1, result2) -> {
    // eredmények összekapcsolása
    return new CombinedResult(result1, result2);
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(combinedResult -> {
    // összekapcsolt eredmény feldolgozása
}, throwable -> {
    // hiba kezelése
});

Itt mindkét hívás párhuzamosan fut az IO szálon, az eredmény pedig összekapcsolódik és átadásra kerül a fő szálon történő feldolgozásra.