rx-java
Дооснащение и RxJava
Поиск…
Настроить дооснащение и RxJava
Retrofit2 поставляется с поддержкой нескольких подключаемых механизмов выполнения, один из которых - RxJava.
Чтобы использовать модификацию с RxJava, вам сначала нужно добавить адаптер Retrofit RxJava в свой проект:
compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
то вам нужно добавить адаптер при создании экземпляра модификации:
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.example.com")
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build();
В вашем интерфейсе, когда вы определяете API, возвращаемый тип должен быть Observable например:
public interface GitHubService {
@GET("users/{user}/repos")
Observable<List<Repo>> listRepos(@Path("user") String user);
}
Вы также можете использовать Single вместо Observable .
Выполнение последовательных запросов
RxJava удобен при выполнении последовательного запроса. Если вы хотите использовать результат из одного запроса для создания другого, вы можете использовать оператор flatMap :
api.getRepo(repoId).flatMap(repo -> api.getUser(repo.getOwnerId())
.subscribe(/*do something with the result*/);
Выполнение параллельных запросов
Вы можете использовать zip оператор для выполнения запроса параллельно и объединить результаты, например:
Observable.zip(api.getRepo(repoId1), api.getRepo(repoId2), (repo1, repo2) ->
{
//here you can combine the results
}).subscribe(/*do something with the result*/);
Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow