2012-05-11 201 views
-2

此方法更新测试变量。但问题是,如果条件不等待调用完成,它会执行并产生错误的结果。任何建议。如何使用同步呼叫GWT或等待呼叫完成

((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; 
} 
+0

你** **迫切需要重新阅读RPC的GWT文档。 –

+0

您必须使用回调才能从服务器获取某些内容。这被称为异步编程,这就是为什么你有Async接口。请在发布问题之前研究GWT的基本知识。 – Renato

+0

兄弟我知道,但问题是如何停止客户端线程,使变量更新。 –

回答

3

异步意味着你不知道何时会发生回调,这就是为什么它不会等待。另外在java中,我们通常使用布尔值(真,假)而不是数字。这里是你会做什么的例子:

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 RPC tutorial的教程。