Sobes.tech
Junior — Middle

Jak za pomocą RxJava wykonać dwa równoczesne wywołania sieciowe i połączyć ich wyniki?

sobes.tech AI

Odpowiedź od AI

W RxJava, aby wykonać dwa wywołania sieciowe równocześnie i połączyć ich wyniki, można użyć operatora zip. Pozwala on uruchomić oba wywołania jednocześnie i otrzymać ich wyniki, gdy oba się zakończą.

Przykład:

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

Single.zip(call1, call2, (result1, result2) -> {
    // łączymy wyniki
    return new CombinedResult(result1, result2);
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(combinedResult -> {
    // obsługa połączonego wyniku
}, throwable -> {
    // obsługa błędu
});

Tutaj oba wywołania są wykonywane równolegle na wątku IO, a wynik jest łączony i przekazywany do głównego wątku do przetwarzania.