2012-05-11 202 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的教程。