com.squareup.retrofit2:retrofit:2.3.0
Mes étapes:Android: Rénovation: demandes asynchrones consécutives multiples. Тoo de nombreux éléments imbriqués
- demande de départ: getCompaniesList()
- Wait réponse de succès
- Démarrer une autre Demande async: getCatalogsList()
- Wait réponse de succès
- Faites quelques autre code
snippet Ici, dans mon activité:
RestClient restClient = RestClientFactory.getRestClient();
Call<List<Company>> companyList = restClient.getCompaniesList(filters);
companyList.enqueue(new Callback<List<Company>>() {
@Override
public void onResponse(Call<List<Company>> call, Response<List<Company>> response) {
if (response.isSuccessful()) {
RestClient restClient = RestClientFactory.getRestClient();
Call<List<Catalog>> catalogList = restClient.getCatalogsList(filters);
catalogList.enqueue(new Callback<List<Catalog>>() {
@Override
public void onResponse(Call<List<Catalog>> call, Response<List<Catalog>> response) {
if (response.isSuccessful()) {
// HERE SOME NEED CODE!!!
}
}
@Override
public void onFailure(Call<List<Catalog>> call, Throwable throwable) {
}
});
}
}
@Override
public void onFailure(Call<List<Company>> call, Throwable throwable) {
}
});
Je pense que cette structure n'est pas très agréable. Тoo de nombreux éléments imbriqués. Comme le code résultat est plus compliqué.
Question: A une alternative à cette structure?
Je recommande d'utiliser 'RxJava' pour quelque chose comme ça. –
Nous avons rencontré le même problème où je travaille. Une solution laide pour améliorer le code serait de notifier les interfaces en cas de succès et de faire le travail dans chaque interface. Mais comme mentionné @John, consultez [RxJava] (https://www.captechconsulting.com/blogs/getting-started-with-rxjava-and-android) ou par chèque [Otto] (http: //square.github. io/otto /) bibliothèque – riadrifai