Oczekiwanie na oddzwonienie dla wielu kontraktów futures
Niedawno zagłębiłem się w trochę pracy przy użyciu API. Interfejs API wykorzystuje bibliotekę Unirest http, aby uprościć pracę odbierania z sieci. Naturalnie, ponieważ dane są wywoływane z serwera API, starałem się być wydajny, używając asynchronicznych wywołań do API. Mój pomysł ma następującą strukturę:
Twórz tablicę danych, zwracając wyniki kontraktów terminowychWyświetl dane + dodatkowe informacje zebrane z danychDlatego muszę odzyskać wszystkie dane, zanim będę mógł rozpocząć drugi krok. Mój kod jest następujący:
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);
Jak bym to zrobił, aby doStuff został wywołany dopiero po zakończeniu obu przyszłości?