首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >取消GWT RequestFactory请求

取消GWT RequestFactory请求
EN

Stack Overflow用户
提问于 2011-07-23 22:21:14
回答 2查看 731关注 0票数 3

有没有办法取消/中止请求出厂请求?使用GWT 2.3

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-25 05:44:22

另一种选择是创建替代的com.google.web.bindery.requestfactory.shared.RequestTransport类型,而不是使用DefaultRequestTransport。这样做的缺点(和BobV的方法的优点)是,你不知道什么时候在服务器上的请求中你杀死了它,所以它可能已经运行了你的一些方法-你不会从他们中得到任何反馈,你只是停止传出的请求。

我怀疑这就是为什么RF没有像RPC那样拥有这个特性。甚至考虑到RPC或RequestBuilder的情况--它们如何通知服务器它们已经改变了主意,并且不运行请求?我的理解是,它们不会这样做--它们被提前关闭的唯一方式是,当它们试图读/写响应时,得到一个tcp错误,因为连接已经关闭。(可能是我弄错了,另一个线程会关注tcp连接的状态并调用thread.stop(Throwable),但对于quite a while,stop已被弃用。)

一种想法是向服务器发送一条消息,告诉它取消来自同一会话的其他请求-这将需要积极参与服务器代码,可能会在ServiceLayerDecorator子类型中成为泛型,可能至少在invokeloadDomainObject(s)getSetter中。这显然是为了让GWT为你构建它……

票数 3
EN

Stack Overflow用户

发布于 2011-07-24 03:57:08

在调用fire()方法之后,无法取消请求。考虑构建一个自定义Receiver基类,如下所示:

代码语言:javascript
复制
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类型中的其他方法重复。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6800974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档