取消GWT请求工厂请求

取消GWT请求工厂请求,gwt,request,requestfactory,Gwt,Request,Requestfactory,是否有取消/中止工厂请求的方法?使用GWT2.3,调用fire()方法后,无法取消请求。考虑建立一个自定义接收器>代码>基类,例如: public abstract class CancelableReceiver<V> extends Receiver<V> { private boolean canceled; public void cancel() { canceled = true; } @Override public fina

是否有取消/中止工厂请求的方法?使用GWT2.3,调用
fire()
方法后,无法取消请求。考虑建立一个自定义<代码>接收器>代码>基类,例如:

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);
}
公共抽象类CancelableReceiver扩展了Receiver{
取消私有布尔运算;
公开作废取消(){
取消=真;
}
@凌驾
成功时公开最终作废(V响应){
如果(!取消){
doOnSuccess(应答);
}
}
受保护的抽象无效数据访问(V响应);
}

该模式可重复用于
接收器
类型中的其他方法。

另一个选项是创建一个可选的
com.google.web.bindery.requestfactory.shared.RequestTransport
类型,而不是使用
DefaultRequestTransport
。这种方法的缺点(和BobV方法的优点)是,您不知道何时在服务器上的请求中终止它,因此它可能已经运行了您的一些方法-您不会从任何方法获得反馈,您只需停止传出的请求

我怀疑这就是为什么RF不像RPC那样已经具有此功能的原因。即使是RPC或RequestBuilder的情况下,那些服务器如何通知他们改变主意,不运行请求?我的理解是,它们没有——它们提前关闭的唯一方式是当它们尝试读取/写入响应时,由于连接已关闭,因此出现tcp错误。(可能是我弄错了,另一个线程会监视tcp连接的状态并调用
thread.stop(Throwable)
,但是stop已经被弃用了。)


一种想法是向服务器发送一条消息,告诉它终止来自同一会话的其他请求-这需要积极参与服务器代码,但可能在
servicelayercorator
子类型中成为通用,可能至少在
invoke
loadDomainObject
中,和
getSetter
,等等。很明显,这涉及到请求GWT为您构建它,尽管…

谢谢,正如您指出的,这并不能真正解决问题,因为服务器仍然认为需要继续处理请求。我在这里创建了一个问题: