-2

このメソッドはテスト変数を更新しています。しかし、問題は、条件が呼び出しが完了するのを待たない場合、代わりに実行され、間違った結果が生成されることです。なにか提案を。

((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;
}
4

1 に答える 1

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で処理できます。私はグーグルがグーグルRPCチュートリアルのように持っているチュートリアルのいくつかに従うことをお勧めします。

于 2012-05-11T06:38:33.813 に答える