Я пытаюсь перейти от использования обычного Retrofit к использованию расширения RxJava для модернизации, чтобы выполнить цепочку вызовов API в фоновом потоке.
Например, у меня есть объект с именем ModelGroup, который имеетсписок объектов ModelPerson.Моя цель состоит в том, чтобы сделать следующее.
- Отправьте ModelGroup на сервер и получите ответ, представляющий собой целое число, представляющее вновь вставленный идентификатор, назовем его newGroupId.
- ДляДля каждого ModelPerson в ModelGroup задайте для Person.groupId значение newGroupId.
- Отправлять каждого сотрудника на сервер.
- Если все объекты ModelPerson из ModelGroup были успешно обновлены с помощью newGroupId, ответьте onSuccess, в противном случае onError.
Мое текущее решение можно увидеть ниже.
private void makeGroupInsert(ModelGroup modelGroup) {
int newGroupId = myApi.insertNewGroup(modelGroup.getName(), modelGroup.getRating())
.execute()
.body();
for (ModelPerson person : modelGroup.getPersons()) {
person.setGroupId(newGroupId);
String response = myApi.insertNewPerson(
person.getGroup_id(),
person.getFirst_Name(),
person.getLast_Name())
.execute()
.body();
if (!response.equals("success")) {
// One failed to update, send error to main thread.
}
}
// All succeeded, send success back to main thread.
}
Вопрос
Как мне достичь того же (или лучше)функциональность с использованием решения RxJava + Retrofit?
EDIT 1
MyApi определено ниже.
public interface MyApi {
@POST("insert_new_group")
Call<Integer> insertNewGroup(@Query("group_name") String groupName,
@Query("group_rating") int rating);
@POST("insert_new_person")
Call<String> insertNewPerson(@Query("group_id") int groupId,
@Query("first_name") String firstName,
@Query("last_name") String lastName);
}