leí respuestas de Q similares & UnDiseño modelo para manejar una respuesta asíncrona en Java
How do you create an asynchronous HTTP request in JAVA? | Asynchronous programming design pattern |
AsyncTask Android - Design Pattern and Return Values
Veo muchas soluciones, pero ninguna realmente me satisface.
manera Listener
Una vez que los resultados son capturados, el procesamiento se lleva a cabo en el método onResult.
public interface GeolocationListener {
public void onResult(Address[] addresses);
public void onError(Exception e);
}
Esta solución no me satisface del todo, porque quiero manejar los resultados en el método principal. Odio esta interfaz porque cuando se devuelve la respuesta, se procesa en onResult, lo que da como resultado cadenas de procesamiento y no hay forma de volver al método "principal".
La forma servlet
public class SignGuestbookServlet extends HttpServlet {
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
// ...
resp.sendRedirect("/guestbook.jsp");
}
}
no hay ningún código de Java expuesta llamar al servlet. Toda la configuración se realiza en el web.xml
La forma que yo quiero
esperar la respuesta como esta
Response a = getResponse();
// wait until the response is received, do not go further
// process
Response b = getResponse();
// wait until the response is received, do not go further
process(a,b);
¿Hay un patrón de diseño para manejar la petición asincrónico y esperar la respuesta como arriba? De otra manera que el oyente. Por favor, no hay biblioteca o marco.
EDIT Gracias hasta ahora las respuestas. No le di la imagen completa, así que expuse la clase de geolocalización Comencé la implementación. No sé cómo implementar el método. ¿Alguien puede mostrar "cómo"? Él (o ella) también debe implementar el oyente para recuperar los resultados
private Address getFullAddress (String text, AddressListener listener, ...){
// new Geolocation(text, listener, options).start()
// implements Geolocation.GeolocationListener
// how to return the Address from the onResult ?
}
Lo que pides en tu edición es fuera de tema. Y el tono es bastante mandón. – toto2
Lo siento, no intenté ser mandón. Acabo de proporcionar más información sobre lo que debe devolver getResponse e implementar también al oyente. Su respuesta ofrece una nueva solución pero es demasiado corta para mí (no implementada con el oyente) para marcarla como la respuesta aceptada. –
@raymondchenon Realmente, cómo hacer algo como esto: dirección privada getFullAddress (texto de cadena, escucha de AddressListener, ...) {--------- Para otra muestra, cuando usamos la biblioteca de Volley, cuando instamos JsonObjectRequest, tiene Overrides onResponse y onError. –