,我讀了類似Q &一個設計模式來處理異步響應在Java中
How do you create an asynchronous HTTP request in JAVA?解答| Asynchronous programming design pattern |
AsyncTask Android - Design Pattern and Return Values
我看到很多解決方案,但沒有真正滿足我的需求。
偵聽方式
一旦結果被發現,則處理在onResult方法實現。
public interface GeolocationListener {
public void onResult(Address[] addresses);
public void onError(Exception e);
}
這種解決方案並不十分satify我,因爲我要處理的主要方法的結果。我討厭這個接口,因爲當返回響應時,它會在onResult中處理,導致處理鏈,無法返回到「main」方法。
該servlet方式
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類 我開始實施。我不知道如何實施該方法。有人可以顯示「如何」?他(或她)還必須實現監聽器如果你想在一個Web應用程序頁面流檢索結果
private Address getFullAddress (String text, AddressListener listener, ...){
// new Geolocation(text, listener, options).start()
// implements Geolocation.GeolocationListener
// how to return the Address from the onResult ?
}
你問你在編輯是離題。而且這個語氣非常專橫。 – toto2
對不起,我並不打算成爲專橫的。只是提供了關於getResponse應該返回並實現偵聽器的更多信息。您的答案提供了一個新的解決方案,但對我來說太短(沒有與聽衆一起實施)將其標記爲接受的答案。 –
@raymondchenon真的,怎麼做這樣的事情:私有地址getFullAddress(字符串文本,AddressListener監聽器,...){---------對於另一個樣品,在使用我們凌空庫,實例化JsonObjectRequest時,它有覆蓋onResponse和onError。 –