Почему бы вам не создать новый метод службы, который возвращает все данные в результате?
Реализация такого метода может просто вызвать все другие методы.Вы должны будете инкапсулировать все необходимые данные и вернуть их как единый результат.Один пример, как вы могли бы справиться с этим:
В реализации службы:
@Override
public Data getAllData(){
List<Cars> cars = this.getAllCars();
List<School> schools = this.getAllSchools();
return new Data(cars, schools);
}
И затем вы можете использовать метод, подобный этому:
service.getAllData(new AsyncCallback<Data data>() {
@Override
public void onSuccess(Data data) {
fillCarListBox(data.getCars());
fillSchoolListBox(data.getSchools());
}
@Override
public void onFailure(Throwable caught) {
Window.alert("Pogreska...");
}
});
С этим видомПри подходе вы минимизируете количество сервисных звонков на вашей клиентской стороне.Это не только создает более читаемый код, но и обычно ускоряет клиентскую часть вашего приложения.Вы всегда должны стараться свести к минимуму количество обращений к сервису, в идеале к одному.
Что касается более общего вопроса сбора количества асинхронных обратных вызовов, хорошим подходом является использование Command Pattern .Gwt Remote Action - это библиотека, которая обеспечивает реализацию упомянутого шаблона для выполнения вызовов RPC:
http://code.google.com/p/gwt-remote-action/