[英]GWT. Order of RPC call
有些事情我听不懂。 我的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调用在第二轮代码执行中执行。
请解释一下为什么会发生。
这就是asyncronous means
,您永远不知道server
何时将结果返回给client
,并且意味着流程继续进行。这就是为什么人们通常在onSuccess()
编写其代码,从而使流程的虚假执行停止直到请求完成。
Docs是一个清晰的执行和RPC Plumbing Diagram
。
接口名称中的Async代表异步 。 有一个原因,您必须使这些接口接受回调,而不要使用仅返回值的同步接口。 那是因为它们是同步的,也就是非阻塞 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.