1

Javadoc forRequestContext#fire()只说:

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

Flow 部分下的GWT Moving Parts wiki 条目仅显示:

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

ReqestContext但是这些方法是否会按照它们在客户端实例上“执行”(累积)的顺序在服务器端执行?

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

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

那么我可以确定在服务器端find()将被调用,persist()所以我updatingReceiver将获得更新(persist()'ed)实体的代理作为参数?

编辑:

更进一步,我是否可以确定在 response 之后返回客户端Reciever将按照与累积相应方法的顺序完全相同的顺序调用?

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

我认为这样的事情可能会奏效:

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

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

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

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

4

1 回答 1

2

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

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

-levelRequest-Context总是 Receiver在调用之后调用。onSuccess无论调用的结果如何(即使它们都失败),它总是被调用,以表明这批调用已成功处理。它onFailure仅在一般故障的情况下调用,即网络错误,或在服务器端(反)序列化请求/响应时出现错误。
请参阅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章

于 2012-04-30T09:25:21.607 回答