Ожидание обратного вызова для нескольких фьючерсов
Недавно я немного углубился в работу с использованием API. API использует библиотеку Unirest http, чтобы упростить работу при получении из Интернета. Естественно, поскольку данные вызываются с сервера API, я пытался быть эффективным, используя асинхронные вызовы API. Моя идея структурирована следующим образом:
Создать массив данных, возвращая результаты фьючерсовОтображение данных + дополнительная информация, собранная из данныхПоэтому мне нужно вернуть все данные, прежде чем я смогу начать второй шаг. Мой код выглядит следующим образом:
Future < HttpResponse < JsonNode > > future1 = Unirest.get("https://example.com/api").asJsonAsync(new Callback < JsonNode > () {
public void failed(UnirestException e) {
System.out.println("The request has failed");
}
public void completed(HttpResponse < JsonNode > response) {
System.out.println(response.getBody().toString());
responses.put(response);
}
public void cancelled() {
System.out.println("The request has been cancelled");
}
});
Future < HttpResponse < JsonNode > > future2 = Unirest.get("https://example.com/api").asJsonAsync(new Callback < JsonNode > () {
public void failed(UnirestException e) {
System.out.println("The request has failed");
}
public void completed(HttpResponse < JsonNode > response) {
System.out.println(response.getBody().toString());
responses.put(response);
}
public void cancelled() {
System.out.println("The request has been cancelled");
}
});
doStuff(responses);
Как бы я сделал так, чтобы doStuff вызывался только после того, как оба фьючерса были закончены?