GWT-异步呼叫延迟

时间:2014-01-24 12:32:02

标签: gwt asynchronous

我在GWT中遇到RPC调用问题。  以下是示例代码段:

我的UI中有四列,其中effdate和enddate作为列标题。 值未按顺序显示。第一列值显示在第3列中。 大部分时间订单都会发生变化。随机显示。

我猜每个计数的RPC调用服务器端方法都会延迟。 我通过调试服务器端方法发现,我通过第一个循环的effdate和结束日期有时会执行第二个或第三个。它正在改变。

任何人都可以帮助我。我需要在代码中进行哪些更改才能获得在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`

1 个答案:

答案 0 :(得分:0)

您可以使用地图代替finallist来跟踪请求和响应 我对你的代码做了一些修改。(它不完整.plz做了必要的修改)。

int count=4;
Map<Integer,Object> map = new HashMap<Integer, Object>();
for(int i=0;i<count;count++)
{   final int index=i; 
    effdate= list.get(countincr);
    enddate= list.get(countincr+1);
    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();
            map.put(index, grpList);                
            //check all items are put on the map and populate values.
        }
            }
            );
    countincr+=2;
} 

此处index用于识别请求和响应  所有响应GrpVO对象及其索引都被放入地图中 最后,您必须从地图生成最终列表 希望这有效。