Sobes.tech
Junior — Middle

Come eseguire due chiamate di rete in parallelo e combinarne i risultati usando RxJava?

sobes.tech AI

Risposta dell'AI

In RxJava, per eseguire due chiamate di rete in parallelo e combinarne i risultati, puoi usare l'operatore zip. Questo permette di avviare entrambe le chiamate contemporaneamente e ottenere i loro risultati quando entrambe sono terminate.

Esempio:

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

Single.zip(call1, call2, (result1, result2) -> {
    // combinare i risultati
    return new CombinedResult(result1, result2);
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(combinedResult -> {
    // elaborazione del risultato combinato
}, throwable -> {
    // gestione dell'errore
});

Qui, entrambe le chiamate vengono eseguite in parallelo su un thread di I/O, e il risultato viene combinato e passato al thread principale per l'elaborazione.