0

有一点我无法理解。我的 GWT 代码中有几个 RPC 调用,例如:

private final PravformServiceAsync getPravformService = GWT.create(PravformService.class);
getService.getSome(new AsyncCallback<List<Pravform>>() {
  public void onFailure(Throwable caught) { 
  }     
  public void onSuccess(List<Pravform> result) {
    pravformList = result;
  }
});

必须在程序启动时执行。但是在调试器的帮助下,我看到这些调用中的代码当时没有执行。它在 onModuleLoad() 过程执行结束时执行,在所有其他代码之后。看起来我的 RPC 调用是在第二轮代码执行时执行的。

请解释一下为什么会这样。

4

2 回答 2

1

就是这样asyncronous means,您永远不知道何时server返回该结果client,并且意味着当流程继续时。这就是人们通常在其中编写代码的原因onSuccess(),以便将来流程的执行停止,直到请求完成。

一个明确的执行,并且RPC Plumbing Diagram有文档。

请看一看。

于 2013-09-05T10:04:40.507 回答
0

接口名称中的Async代表异步。您必须使这些接口接受回调而不是使用仅返回值的同步接口是有原因的。原因是它们是同步的,也就是非阻塞的。

于 2013-09-05T10:04:43.077 回答