我想從服務器獲取兩個XML文檔,並在兩者都到達時恢復處理。我可以並行獲取它們,還是必須在第一個請求完成之前不要發出第二個請求?等待多個事件(使用GWT)
3
A
回答
1
發出兩個請求,然後檢查任何一個完成時是否完成另一個,如果是,則繼續。
private String responseOne;
private String responseTwo;
public startRequests() {
makeAsyncRequestOne(new AsyncCallback<String>() {
onSuccess(String response) {
this.responseOne = response;
if (responseTwo != null) {
proceed();
}
}
});
makeAsyncRequestTwo(new AsyncCallback<String>() {
onSuccess(String response) {
this.responseTwo = response;
if (responseOne != null) {
proceed();
}
}
});
}
正如克里斯指出,這可能會碰到的最大併發請求到相同的主機名上限,所以如果你有很多的請求一次發送,你可以繼續請求隊列,並調用下一個在proceed()
中,直到隊列耗盡。
但是,如果您計劃有很多併發請求,那麼您可能需要重新設計您的服務,以便一起批量操作。
2
您可以並行獲取它們,但請記住,瀏覽器對並行請求的數量有限制,請參閱http://www.browserscope.org/?category=network(在左上角的下拉列表中選擇「主要版本」以查看更多版本)。特別要注意的是,IE < 8的每個主機名限制爲2個連接!
如果您仍想這樣做,請注意響應可以按任意順序到達。所以你必須實現一些能夠跟蹤請求/響應(計數器或更復雜的事情)的東西,以便你知道什麼時候你需要的所有響應都已經到達。
最好的解決方案通常只發送一個請求來請求這兩個XML文檔,並且服務器在一個響應中同時返回它們。
相關問題
- 1. 使用ManualResetEvent等待多個Image.ImageOpened事件
- 2. 等待多個事件C++
- 3. 在iOS中等待多個事件?
- 4. jQuery等待多個事件觸發
- 5. 如何等待多個事件?
- 6. 等待事件
- 7. 等待一個事件regulary
- 8. 如何使用等待或線程等待事件發生
- 9. 等待用戶事件
- 10. 用Selenium等待JavaScript事件
- 11. Selenium - 等待事件
- 12. 使用異步CTP等待事件?
- 13. 使用asyc等待事件更新UI
- 14. 用於(多個事件)用例的RxJS +(異步/等待)
- 15. GWT多個事件處理
- 16. 等待多個Ajax調用
- 17. 等待多個SwingWorkers
- 18. 使用boost :: asio和strands的事件隊列:等待新事件
- 19. 在onclick事件中等待FB.logout()事件
- 20. KeyPress事件等待MousePress事件qt
- 21. 等待一個事件的功能
- 22. 在JAVA中等待一個事件
- 23. BPMN - 等待一個事件一次
- 24. GWT等待setVisibleRangeAndClearData完成
- 25. GWT - 睡眠\等待信號?
- 26. 等待click事件完成
- 27. debounceTime(),並等待事件
- 28. 的HtmlUnit等待onclick事件
- 29. 等待事件完成
- 30. 等待承諾的事件
謝謝。看起來很簡單,爲我的情況執行。我不想依靠服務器上的代碼來響應這些請求,所以對它們進行批處理似乎並不是正確的方法。 – 2011-02-23 18:35:30