GWT에서 RPC 호출에 문제가 있습니다. 다음은 코드 예제입니다.GWT- 비동기 호출 지연
내 UI에는 effdate가 있고 열 헤더는 enddate 인 열이 4 개 있습니다. 값이 순서대로 표시되지 않습니다. 첫 번째 열 값이 세 번째 열에 표시됩니다. 대부분 주문이 변경됩니다. 무작위로 표시.
각 카운트마다 서버 쪽 방법으로 RPC 호출이 지연됩니다. 그리고 나는 서버 측 방법을 디버깅하여 발견했다. 첫 번째 루프를 위해 지나가고있는 effdate와 end date는 2 ~ 3 번 실행된다. 그것은 걷고있다.
어느 누구도이 문제를 해결할 수 있습니까? 올바른 값을 UI에 표시하려면 코드에서 수행해야 할 변경 사항 이것에 대한 아이디어가 있으십니까?
count=4;
List finalList = new arrayList();
for(i=0;i<count;count++)
{
effdate= list.get(countincr);
enddate= list.get(countincr+1);
//call to server side method to fetch values from DB by passing effdate and end date as parameter.
grp.ratecalc(startdate,enddate,new AsyncCallback<List<grVo>>()
{
public void onfailure(throwable caught)
{
sys.out.print("failure");
}
public void onsuccess(List<grVo> result)
{
List grpList= new GrpVO();
rate = result.get(0).getrate();
rate1 = result.get(0).getrate1();
grpList.setrate();
grpList.setrate1();
setting values in bean for the remaining values in the result.
finalList.add(grpList);
if(finalList.size()== count)
{
//calling a method to populate the values
methoddisplay(finalList);
}
}
}
);
countincr+=2;
} //end of for loop`
코드가 작동하지 않습니다. 당신은 RCP 호출을 동시 처리하지만 비동기 적으로 감염시킵니다. 4 개의 호출 중 어느 것이 서버로부터 응답을 수신하는 첫 번째 호출인지는 정의되지 않습니다. 코드를 재 설계해야합니다. –
동기 및 비동기 호출간에 차이가 있습니다. 당신이 그것을 이해한다면, 당신의 문제는 해결 될 것입니다. –
감사합니다 !! 방금 GWT를 사용하기 시작했습니다. 일단 요청이 이루어지면 비동기 호출이 응답을 기다리지 않는다는 것을 이해합니다. 위의 코드는 작동하지만 표시 순서가 잘못되었습니다. 올바른 순서로 실행하려면 어떻게해야합니까? 많은 비동기 호출을 반복하고 올바른 순서로 실행해야합니다. 어떻게해야합니까? – Minnie