
您可以将调用本身包装在处理显示加载消息的对象中,也许对错误或其他原因重试几次。像这样:
public abstract class AsyncCall<T> implements AsyncCallback<T> { protected abstract void callService(AsyncCallback<T> cb); public void go(int retryCount) { showLoadingMessage(); execute(retryCount); } private void execute(final int retriesLeft) { callService(new AsyncCallback<T>() { public void onFailure(Throwable t) { GWT.log(t.toString(), t); if (retriesLeft <= 0) { hideLoadingMessage(); AsyncCall.this.onFailure(t); } else { execute(retriesLeft - 1); } } public void onSuccess(T result) { hideLoadingMessage(); AsyncCall.this.onSuccess(result); } }); } public void onFailure(Throwable t) { // standard error handling } ...}要进行呼叫,请执行以下 *** 作:
new AsyncCall<DTO>() { protected void callService(AsyncCallback<DTO> cb) { DemoService.App.get().someService("bla", cb); } public void onSuccess(DTO result) { // do something with result }}.go(3); // 3 retries您可以使用代码扩展它,以检测花费很长时间的呼叫并显示某种繁忙指示等。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)