Работая над моим первым проектом Java, я не могу обойти эту, вероятно, основную проблему: в приложении JavaFX
у меня есть класс DAO
, который запускает service
для получения значений из mysql
db, строит из него объект и возвращает объект вызывающей стороне.Но объект никогда не получает сборку, потому что возвращение происходит до того, как служба преуспела.
public IQA getQA(int id) throws SQLException {
try {
GetQuizService getQuizService = new GetQuizService();
getQuizService.restart();
getQuizService.setId(id);
getQuizService.setOnSucceeded(e -> {
this.quiz = getQuizService.getValue();
});
} catch (Exception e) {
System.err.println(e);
}
return quiz;
}
Служба работает нормально, внутри действия onSucceeded объект присутствует, но как я могу заставить ожидание возврата, покаСлужба завершена?
В соответствии с запросом приведена минимальная версия GetQuizService
public class GetQuizService extends Service<Quiz> {
private int id;
private Quiz quiz;
public void setId(int id) {
this.id = id;
}
@Override
protected Task<Quiz> createTask() {
return new Task<Quiz>() {
@Override
protected Quiz call() throws Exception {
// Severall calls to db here, Quiz object gets constructed
return quiz;
}
};
}
}