2012-12-10 71 views
-1

我在for循環中有一個rpc調用來接收元素列表。我遇到的問題是在for循環完成之前調用該方法的return語句。那麼有可能強制return語句等待循環結束?java rpc in for循環

public List<SOMETHING> getList() { 
    List<SOMETHING> list = ...; 
    for (A FEW REPETITIONS) { 
      RPC-CALL() { 
      public void onSuccess(List<SOMETHING> result) { 
       list.addAll(result); 
      } 
      } 
    } 

    return list; 
} 
+1

您使用的是什麼RPC機制?這些異步調用? –

+0

如果您的rpc調用正在單獨的線程/進程中執行,則需要等待。你能把更多的代碼/更清楚嗎? –

+0

for循環中沒有return語句。如何在for循環完成之前返回? –

回答

2

我認爲你需要使用CountDownLatch,可以將計數器初始化爲RPC調用數你在做。減少獲得回覆您的RPC呼叫的次數,並使用countDownLatch.await()等待答覆

+0

我正在使用java gwt,而當我簡單地創建一個新的CountDownLatch對象時,我得到一個com.google.gwt.dev。 jjs.InternalCompilerException:無法獲得JNode – wasp256

+0

它看起來像GWT不支持客戶端中的任何同步。在這種情況下,您可能需要避免從此方法返回值,而是讓調用者提供一些actionListener類型的處理程序,您將使用所有處理的結果調用它。 –