RequestContext #fire()中累积的方法调用顺序?

时间:2012-04-30 06:58:26

标签: gwt gwt2 requestfactory

RequestContext#fire()的Javadoc只说:

  

发送与RequestContext关联的累积更改和方法调用。

流程部分下的

GWT Moving Parts wiki entry仅表示:

  
      
  • 所有累积的操作都将通过遍历代理的属性应用于域对象。
  •   
  • 执行有效内容中的所有方法调用。
  •   

但是这些方法是否会在服务器端以与客户端ReqestContext实例上“执行”(累积)相同的顺序执行?

对于我的情况,如果我在客户端执行:

context.persist().using(proxy)
context.find(proxy.stableId().to(updatingReceiver))
context.fire()

然后我可以确定在find()之后将在服务器端persist()调用,以便我的updatingReceiver将获得更新的(persist()'ed)实体的代理参数

编辑:

更进一步,我可以确定在响应Reciever之后将以与其相应方法累积完全相同的顺序调用客户端吗?

最后,有没有办法在所有Receiver个动作之后添加一些将在响应处理结束时调用的动作?

我认为这样的事情可能有用:

requestContext.fire(new Receiver<Void>() {
    @Override
    public void onSuccess(Void response) {
        //Things to do after all receivers
    });

它似乎真的像我预期的那样工作,但因为Javadoc告诉我关于RequestContext.fire(Receiver)方法的所有内容是:

  

仅用于接收错误或验证失败。

我不能100%确定我的假设是否正确。

1 个答案:

答案 0 :(得分:2)

是的,在调用Reciever时,方法调用的顺序在服务器端保留,然后在客户端返回。

队列是一个简单的ArrayList,其中附加了调用对象。在服务器端,它们按照收到的顺序进行处理。

Request-Context - 级 Receiver始终在调用之后调用。始终调用其onSuccess,无论调用的结果如何(即使它们都失败),都表示已成功处理批量调用。其onFailure仅在一般故障的情况下被调用,即网络错误,或在服务器端(de)序列化请求/响应时出错。
http://code.google.com/p/google-web-toolkit/source/browse/trunk/user/src/com/google/web/bindery/requestfactory/shared/impl/AbstractRequestContext.java?r=10835#345