有没有办法取消/流产请求工厂请求?使用GWT 2.3

有帮助吗?

解决方案

另一个选择是创建替代方案 com.google.web.bindery.requestfactory.shared.RequestTransport 类型,而不是使用 DefaultRequestTransport. 。不利的一面(BOBV方法的好处)是,您将不知道在服务器上的请求中杀死它,因此它可能已经运行了一些方法 - 您不会从任何一个中获得反馈,您只会停止传出请求。

我怀疑这就是RF像RPC一样没有此功能的原因。即使考虑RPC的情况或RequestBuilder的情况 - 这些人如何通知服务器他们已经改变了主意并不运行请求?我的理解是,他们没有 - 唯一提早关闭的方法是,当他们尝试读取/写入响应并获得TCP错误时,由于连接已关闭。 (我可能会误会,另一个线程一直关注TCP连接的状态并调用 thread.stop(Throwable), ,但停止已被弃用 一段时间.)

一个想法是将消息发送给服务器,告诉它要杀死同一会话中的其他请求 - 但是,这需要积极参与您的服务器代码,可能会在 ServiceLayerDecorator 亚型,至少可能是 invoke, loadDomainObject(s), , 和 getSetter, ,其他。这很明显是要要求GWT为您建造它...

其他提示

没有办法在 fire() 方法已被调用。考虑建立习俗 Receiver 基础类,例如以下内容:

public abstract class CancelableReceiver<V> extends Receiver<V> {
  private boolean canceled;

  public void cancel() {
    canceled = true;
  }

  @Override
  public final void onSuccess(V response) {
    if (!canceled) {
      doOnSuccess(response);
    }
  }

  protected abstract void doOnSuccess(V response);
}

可以重复该模式的其他方法 Receiver 类型。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top