因此,本质上该项目构建了一个测试各种测试类型结果的门户。获取和显示结果很好;但是,结果表未按正确顺序显示。它们显示的顺序是随机的,但是它清楚地指定了调用RPC调用的顺序,我甚至在我的面板中实现了索引系统以进一步提供帮助。
基本上,应用程序由一个垂直面板中包含的三个水平面板组成。
进一步说明:new,mid和old指的是正在测试的软件产品的三个版本。 TestTable只是一个自定义FlexTable,每个xxxPanel都是HorizontalPanel。索引都在onModuleLoad()方法之外初始化为零。每个面板都有自己的服务,负责调度RPC调用以填充相应的面板。
public void onSuccess(List<TestResult> result) {
TestTable testTable1 = new TestTable(result);
if(result.get(0).getVrmf().equals(newestVersion)){
newPanels.insert(testTable1, newIndex + 1); //insert adds element BEFORE specified index, so +1
newPanels.addStyleName("horizontalPanelStyle");
newIndex++;
}
if(result.get(0).getVrmf().equals(middleVersion)){
midPanels.insert(testTable1, midIndex + 1); //insert adds element BEFORE specified index, so +1
midPanels.addStyleName("horizontalPanelStyle");
midIndex++;
}
if(result.get(0).getVrmf().equals(oldVersion)){
oldPanels.insert(testTable1, oldIndex + 1); //insert adds element BEFORE specified index, so +1
oldPanels.addStyleName("horizontalPanelStyle");
oldIndex++;
}
}
};
以下是我的电话分派方式:
if(testPortalSvcNew != null){
testPortalSvcNew.getTestResults(5, newestVersion, TestType.SMOKE, callback);
testPortalSvcNew.getTestResults(5, newestVersion, TestType.BVTUNIX, callback);
testPortalSvcNew.getTestResults(5, newestVersion, TestType.BVTWINDOWS, callback);
}
每次刷新都会生成测试类型可能不同的水平显示顺序。版本正确分组并垂直分隔,但它们的水平排序很棘手。我很难过!
答案 0 :(得分:4)
所以你期望测试按照SMOKE,BVTUNIX和BVTWINDOWS的顺序返回?
如果是这样,您将需要链接异步调用或将它们分组到一个ajax调用中,该调用会立即返回所有这些调用。异步调用就是这样。不保证退货订单。
答案 1 :(得分:0)
您可以尝试为每个面板创建一个新的TestTable
实例。现在,您要将相同的实例添加到所有三个面板。我不确定这是否有帮助,但这有时可能会导致GWT中的奇怪行为,因此值得一试。
但是我同意@j flemm您永远无法确定异步服务的执行顺序。