Асинхронный обратный вызов в GWT - почему финал? - PullRequest
1 голос
/ 12 марта 2011

Я разрабатываю приложение в GWT в качестве дипломной работы бакалавра, и я довольно новичок в этом.Я исследовал асинхронные обратные вызовы в Интернете.Я хочу сделать следующее: я хочу обработать логин пользователя и отобразить разные данные, если они администратор или обычный пользователь.

Мой вызов выглядит следующим образом:

serverCall.isAdmin(new AsyncCallback<Boolean>() {
        public void onFailure(Throwable caught) {
            //display error
        }

        public void onSuccess(Boolean admin) {
            if (!admin){
                //do something 
            }
            else{
                //do something else
            }

        }
    });

Теперь примеры кода, которые я видел, обрабатывают данные в // части выполнения чего-либо // напрямую.Мы обсуждали это с человеком, который контролирует меня, и у меня была идея, что я могу запустить событие в случае успеха, и когда это событие будет запущено, загрузите страницу соответствующим образом.Это хорошая идея?Или я должен придерживаться загрузки всего во внутренней функции?Что меня смущает насчет асинхронных обратных вызовов, так это то, что я могу использовать только заключительные переменные внутри функции onSuccess, поэтому я бы не стал обрабатывать их там - понимание будет оценено.

Спасибо!

Ответы [ 2 ]

1 голос
/ 25 января 2012

Поскольку внутренняя классовая / анонимная функция генерируется во время выполнения, ей требуется статическая ссылка в памяти на переменные, к которым она обращается.Помещение final в переменную делает ее адрес памяти статическим, помещая его в безопасную область памяти.То же самое происходит, если вы ссылаетесь на поле класса.

1 голос
/ 10 июня 2011

Это просто стандартная Java, поэтому вы можете использовать только переменные Final внутри внутреннего класса. Вот отличное обсуждение этой темы .



Когда я использую AsyncCallback, я делаю именно то, что вы предложили, я запускаю событие через EventBus GWT.Это позволяет нескольким различным частям моего приложения отвечать, когда пользователь входит в систему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...