如何在GWT中使用同步呼叫或等待呼叫完成

时间:2012-05-11 04:30:27

标签: gwt web

此方法正在更新测试变量。但问题是如果条件不等待调用完成而不是它执行并产生错误的结果。任何建议。

((GWTServiceUsersAsync)GWT.create(GWTServiceUsers.class)).checkSession(callbackcheck);

if(test==0) {
  MessageBox.alert("Access denied", "Access denied, please log in", null);
  return 0;
} else {
  return 1;
}

1 个答案:

答案 0 :(得分:3)

异步意味着您不知道何时会发生回调,这就是它不等待的原因。同样在java中我们通常使用布尔值(true,false)而不是数字。以下是您要做的事情的示例:

 GWTServiceUsersAsync service = GWT.create(GWTServiceUsersAsync.class)
    service.checkSession(new AsyncCallback() {
       public void onSuccess(boolean test) {
         if(!test) {
            MessageBox.alert("Access denied", "Access denied, please log in", null);
            responseHandlingMethod(true);
         }
         responseHandlingMethod(test);
       }

        public void onFailure(Exception e) {
             responseHandlingMethod(test);
        }
    }

然后可以在responseHandlingMethod中处理检查会话之后的其余代码。我建议按照google的一些教程Google RPC tutorial进行操作。