在 Java 中处理异步响应的设计模式
我从类似的问答中阅读了答案
如何在 JAVA 中创建异步 HTTP 请求?|异步编程设计模式|
AsyncTask Android - 设计模式和返回值
我看到了很多解决方案,但没有一个能真正让我满意。
监听方式
捕获结果后,将在 onResult 方法中实现处理。
public interface GeolocationListener {
public void onResult(Address[] addresses);
public void onError(Exception e);
}
这个解决方案并不能完全满足我,因为我想在main方法中处理结果。我讨厌这个接口,因为当返回响应时,它会在result中处理,从而导致处理链,并且无法返回“main”方法。
服务方式
public class SignGuestbookServlet extends HttpServlet {
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
// ...
resp.sendRedirect("/guestbook.jsp");
}
}
没有公开的 Java 代码调用 servlet。所有配置都是在 Web 中完成的.xml
我想要的方式
等待这样的响应
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);
是否有设计模式来处理异步请求并等待如上所述的响应?除了听众之外,其他方式。请不要使用库或框架。
编辑感谢到目前为止的回应。我没有给你完整的画面,所以我公开了我开始实现的Geolocation类。我不知道如何实现该方法。有人可以展示“如何”吗?他(或她)还必须实现侦听器来检索结果
private Address getFullAddress (String text, AddressListener listener, ... ){
// new Geolocation(text, listener, options).start()
// implements Geolocation.GeolocationListener
// how to return the Address from the onResult ?
}