2012-12-10 2 views
-1

for 루프에서 rpc 호출을 통해 요소 목록을 수신했습니다. 문제는 for 루프가 완료되기 전에 메서드의 return 문이 호출된다는 것입니다. return 문이 루프가 끝나기를 기다리게 할 가능성이 있습니까?for 루프 용 Java rpc

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

난 당신, 당신은 RPC의 수는 만들고 호출에 카운터를 초기화 할 수 CountDownLatch을 사용할 필요가 있다고 생각합니다. rpc 호출에 대한 회신 횟수를 줄이고 countDownLatch.await()을 사용하여 회신을 기다립니다.

+0

Java gwt를 사용하고 있고 단순히 새로운 CountDownLatch 객체를 만들면 com.google.gwt.dev가 생깁니다. jjs.InternalCompilerException : JNode를 가져 오지 못했습니다. – wasp256

+0

GWT가 클라이언트의 동기화를 지원하지 않는 것 같습니다. 이 경우이 메서드에서 값을 반환하지 말고 호출자가 처리 된 모든 결과와 함께 호출하는 일부 actionListener 종류의 처리기를 제공하도록 할 수 있습니다. –