取消GWT RequestFactory请求
-
22-10-2019 - |
题
有没有办法取消/流产请求工厂请求?使用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
类型。
不隶属于 StackOverflow